服务端:
# encoding utf-8 from socket import * from time import ctime HOST = '127.0.0.1' # 是空的,这个时对bind()方法的标识,表示他可以使用任何可用的地址 PORT = 21567 BUFSIZ = 1024 # 缓冲区大小设置为1KB ADDR = (HOST, PORT) tcpSerSock = socket() # 创建TCP服务器套接字1 tcpSerSock.bind(ADDR) # 绑定地址 tcpSerSock.listen(5) # 参数5 是在连接被转接或拒绝之前,传入连接请求的最大数 while True: print('waiting for connection') tcpCliSock, addr = tcpSerSock.accept() print('...connect form:', addr) while True: data = tcpCliSock.recv(BUFSIZ) if not data: # 如果消息为空,则跳出循环 break # tcpCliSock.send('[%s] %s' % ((bytes(ctime(), 'utf-8')), data)) # 注意传送数据时应该是bytes类型的数据 #tcpCliSock.send(b'[%s] %s') % (bytes(ctime(), 'utf-8'), data) #tcpCliSock.send((bytes(ctime(), 'utf-8'), data)) tcpCliSock.send(data) tcpCliSock.send((bytes(ctime(), 'utf-8'))) #tcpCliSock.send(data) tcpCliSock.close() # 跳出循环后,关闭当前的客户端socket,并且等待下一个客户端接入 tcpSerSock.close()
客户端:
#encoding utf-8
from socket import * HOST = '127.0.0.1' PORT = 21567 BUFSIZ = 1024 ADDR = (HOST, PORT) tcpCliSock = socket() tcpCliSock.connect(ADDR) while True: data = input('> ') if not data: #如果客户端没有输入,那么程序就会结束 break tcpCliSock.send(bytes(data, 'utf-8')) data = tcpCliSock.recv(BUFSIZ) if not data: #如果服务器终止且对recv()方法调用失败 break data = tcpCliSock.recv(BUFSIZ) print(data.decode('utf-8')) tcpCliSock.close()