关于tcp
服务器端:
import socket f1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) f1.bind(("127.0.0.1",8080)) f1.listen(5) while True: try: conn,client_addr = f1.accept() data = conn.recv(1024) print(data.decode('utf-8')) conn.send(data.upper()) except Exception as e: break conn.close() 客户端:
import socket cl = socket.socket(socket.AF_INET,socket.SOCK_STREAM) cl.connect(("127.0.0.1",8080)) while True: msg = input("我就是要说:").strip() if len(msg) == 0:continue cl.send(msg.encode('utf-8')) data = cl.recv(1024) print(data.decode('utf-8')) cl.close() udp的实现: 服务端
import socket f1 = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) f1.bind(("127.0.0.1",8080)) while True: res,client_addr = f1.recvfrom(1024) print(res.decode('utf-8')) f1.sendto(res.upper(),client_addr) f1.close() 客户端:
import socket c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True: msg = input("这是我要说的话:").strip() c.sendto(msg.encode('utf-8'),("127.0.0.1",8080)) res,server_addr = c.recvfrom(1024) print(res.decode('utf-8')) c.close() udp 和tcp实现过程种 tcp如果传值为空则会卡住,流式协议,传值为空,服务端收不到则会一直卡着等待 所以在客户端判断了 msg==0的情况 另外异常断开客户端会导致服务端出现bug异常,所以在windows系统下使用try:except 来捕捉异常 使其正常返回 其他方面的不同就是基于原理,,如不需要建立池,客服端也不需要连接端口号,直接发送即可若想要回传,接收方在收记录的时候会记录发送号端口号和ip 回传信息即可