1 #encoding=utf-8 2 #創建一個socketserverTCP服務器 3 #高級模塊,簡化客戶和服務器的實現 4 from SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH) 5 from time import ctime 6 7 host = '' 8 port = 21567 9 addr = (host,port) 10 11 #從 SocketServer 的 StreamRequestHandler 類中派生出一個子類 12 class MyRequestHandler(ARH): 13 def handel(self): 14 print 'connected from ',self.client_address 15 self.wfile.write('[%s] %s ' % (ctime(),self.rfile.readline())) 16 #用 readline()函數得到客戶消息,用 write()函數把字符串發給客戶。 17 18 tcpServ = TCP(addr,MyRequestHandler) 19 print 'waiting for connection' 20 tcpServ.serve_forever()
1 #encoding=utf-8 2 # 是一個時間戳 TCP 客戶端,它知道如何與 SocketServer 里 StreamRequestHandler 對象進行 3 # 通訊。 4 from socket import * 5 6 host = 'localhost' 7 port = 21567 8 bufsiz = 1024 9 addr = (host,port) 10 11 while True: 12 tcpClientSock = socket(AF_INET,SOCK_STREAM) 13 tcpClientSock.connect(addr) 14 data = raw_input('>') 15 if not data: 16 break 17 tcpClientSock.send('%s\r\n' % data) 18 # 我們可以用 readline()函數得到客戶消息,用 write()函數把字 19 # 符串發給客戶。 20 # 為了保持一致性,我們要在客戶與服務器兩端的代碼里都加上回車與換行。實際上,你在代碼 21 # 中看不到這個,因為,我們重用了客戶傳過來的回車與換行。 22 data = tcpClientSock.recv(bufsiz) 23 if not data: 24 break 25 print data.strip() 26 27 tcpClientSock.close()