#server.py #coding:utf-8 import socket sk = socket.socket() ip_port = ('127.0.0.1',9999) sk.bind(ip_port) sk.listen(5) while True: conn,address = sk.accept() conn.send('hello.') flag = True while flag: data = conn.recv(1024) print data if data =='exit': flag = False conn.send('sx') conn.close()
#client.py #coding:utf-8 import socket client = socket.socket() ip_port = ('127.0.0.1',9999) client.connect(ip_port) while True: data = client.recv(1024) print data inp = raw_input('client:') client.send(inp) if inp =='exit': break
異步多線程服務端Server.pypython
#coding:utf-8 import SocketServer class MyServer(SocketServer.BaseRequestHandler): def setup(self): pass def handle(self): # print self.request,self.client_address,self.server #self.request = socket # conn = self.request conn.send('hello.') flag = True while flag: data = conn.recv(1024) print data if data =='exit': flag = False conn.send('asd') conn.close() def finish(self): pass if __name__ == '__main__': server = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer) server.serve_forever()
socket 上傳文件
多線程
#!/usr/bin/env python #coding:utf-8 import SocketServer import os class MyServer(SocketServer.BaseRequestHandler): def handle(self): base_path = 'G:/temp' conn = self.request print 'connected...' while True: pre_data = conn.recv(1024) #獲取請求方法、文件名、文件大小 cmd,file_name,file_size = pre_data.split('|') #已經接收文件的大小 recv_size = 0 #上傳文件路徑拼接 file_dir = os.path.join(base_path,file_name) f = file(file_dir,'wb') Flag = True while Flag: #未上傳完畢, if int(file_size)>recv_size: #最多接收1024,可能接收的小於1024 data = conn.recv(1024) recv_size+=len(data) #上傳完畢,則退出循環 else: recv_size = 0 Flag = False #寫入文件 f.write(data) print 'upload successed.' f.close() instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer) instance.serve_forever() server