#练习3:TCP协议+while循环 服务端: import socket #socket模块 import sys reload(sys) sys.setdefaultencoding("utf-8") HOST='127.0.0.1' PORT=8085 s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP s.bind((HOST,PORT)) #套接字绑定的IP与端口 s.listen(1) #开始TCP监听,listen中的参数表示可以多少客户端来进行连接 while 1: print u"开始连接" conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址 print'Connected by',addr #输出客户端的IP地址 while 1: data=conn.recv(1024) #把接收的数据实例化 print data conn.sendall(u'从服务得到结果:'.encode("gbk")+data.upper()) conn.close() #关闭连接 客户端: import sys import socket reload(sys) sys.setdefaultencoding("utf-8") HOST='127.0.0.1' PORT=8085 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP s.connect((HOST,PORT)) #要连接的IP与端口 while 1: cmd=raw_input(u"向服务器发送命令:".encode("gbk")) #与人交互,输入命令 s.sendall(cmd) #把命令发送给对端 data=s.recv(1024) #把接收的数据定义为变量 print data #输出变量 s.close() #关闭连接 #练习4:TCP协议+while循环+异常捕获 服务端: import socket #socket模块 import commands #执行系统命令模块 import sys reload(sys) sys.setdefaultencoding("utf-8") HOST='127.0.0.1' PORT=8086 s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP s.bind((HOST,PORT)) #套接字绑定的IP与端口 s.listen(5) #开始TCP监听,listen中的参数表示可以多少客户端来进行连接 while 1: print u"开始接收数据" conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址 print'Connected by',addr #输出客户端的IP地址 while 1: try: data=conn.recv(1024) #把接收的数据实例化 print data conn.sendall(u'服务返回结果'.encode("gbk")+data.upper()) except Exception: conn.close() #关闭连接 break 客户端: import socket import sys reload(sys) sys.setdefaultencoding("utf-8") HOST='127.0.0.1' PORT=8086 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP s.connect((HOST,PORT)) #要连接的IP与端口 times=3 while times>0: cmd=raw_input(u"向服务器发送命令:".encode("gbk")) #与人交互,输入命令 s.sendall(cmd) #把命令发送给对端 data=s.recv(1024) #把接收的数据定义为变量 print data #输出变量 times-=1 s.close() #关闭连接 #练习5:代码优化,发送多条 服务端: import time if __name__ == '__main__': import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 8009)) sock.listen(5) while True: print u"服务开始监听状态" time.sleep(0.1) connection,address = sock.accept() while 1: try: connection.settimeout(5) buf = connection.recv(1024) print "got message from client:",buf if buf == '1': print "1" connection.send(u'您做的操作是:选择1'.encode("gbk")) elif buf == '2': connection.send(u'您做的操作是:选择2'.encode("gbk")) elif buf == "close": connection.send(u'您做的操作是:选择close'.encode("gbk")) connection.close() break except socket.timeout: print u'连接超时' connection.close() break except Exception,e: print e connection.close() break 客户端: if __name__ == '__main__': import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 8009)) import time time.sleep(2) sock.send('2') print sock.recv(1024) sock.send('1') print sock.recv(1024) sock.send('close') print sock.recv(1024) print "Done!" sock.close() #练习6:传输+command命令 服务端: import os if __name__ == '__main__': import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 8001)) sock.listen(5) while True: connection,address = sock.accept() try: connection.settimeout(5) command = connection.recv(1024) print command result=os.popen(command) print result print result.name connection.send(result.name) connection.send(result.read()) except socket.timeout: print 'time out' connection.close() 客户端: if __name__ == '__main__': import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 8001)) import time time.sleep(2) sock.send('ipconfig') print "command name:",sock.recv(10) print "command result:",sock.recv(1024) sock.close() #练习7:socket传输文件 服务端: import socket,os,time,struct,threading,SocketServer host = '127.0.0.1' port = 12307 sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 定义socket类型 sk.bind((host, port)) # 绑定需要监听的Ip和端口号,tuple格式 sk.listen(1) def conn_thread(connection, address): while True: try: connection.settimeout(600) fileinfo_size=struct.calcsize("128sl") buf=connection.recv(fileinfo_size) if buf: filename,filesize=struct.unpack("20sl",buf) filename_f=filename.strip("