Python socket编程-进阶
基于客户端和服务端不间断通讯操作
client
import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) phone.connect(('localhost', 8081,)) while True: """ 客户端不能发送空字符串,当发送空字符串后无法被服务端接收,造成服务端一直等待""" msg=input('客户端:') if not msg:continue # 如果数据为空则重新跳过 phone.send(msg.encode('utf-8')) msg=phone.recv(1024) msg=msg.decode('utf-8') print(msg) phone.close()
server
import socket ip_port = ('localhost', 8081,) backlog = 5 bufsize = 1024 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) phone.bind(ip_port) phone.listen(backlog) while True: # 1. 外层循环,主要负责为当一个客户端终止连接或退出的时候,继续重新接收下一个客户端的连接; connect, address = phone.accept() while True: # 2. 内层循环, 主要与当前客户端保持不间断的通讯 try: # 3. try .....except 主要保护当前与客户端通讯发生异常后主动退出与当前客户端的通讯,重而继续接收下一个客户端的连接 msg = connect.recv(bufsize) msg = msg.decode('utf-8') print(msg) connect.send('服务端回应:success'.encode('utf-8')) except Exception as e: print(e) break connect.close() phone.close()