
import socket #创建服务端的 socket 对象 socketserver socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = '192.168.0.103' port = 4567 #绑定地址(包括 ip 地址会端口号) socketserver.bind((host, port)) #设置监听 socketserver.listen(5) #等待客户端的连接 #注意:accept()函数会返回一个元组 #元素 1 为客户端的 socket 对象,元素 2 为客户端的地址(ip 地址,端口号) clientsocket,addr = socketserver.accept() #while 循环是为了能让对话一直进行,直到客户端输入 q while True: #接收客户端的请求 recvmsg = clientsocket.recv(1024) #把接收到的数据进行解码 strData = recvmsg.decode("utf-8") #判断客户端是否发送 q ,是就退出此次对话 if strData=='q': break print("收到:"+strData) msg = input("回复:") #对要发送的数据进行编码 clientsocket.send(msg.encode("utf-8")) 1 Nooooobycat 2023-08-15 17:19:17 +08:00 python 3.8.10 无法复现你的问题  |
2 zictos 2023-08-15 17:37:20 +08:00 肯定会阻塞的,除非程序已经 break 退出了。 你看到执行 print("收到:"+strData)这行后,之后就会显示“回复:”让你输入的,这个时候就阻塞了 |
3 sbldehanhan OP @Nooooobycat #1 验证了一下,不是操作系统的问题。应该是 Python 版本不一致导致的,我客户端用的是 3.11 ,服务端用的是 3.10 。如果代码用的是同一个版本,可以正常工作。 |
4 sbldehanhan OP @zictos #2 应该是 Python 版本不一致导致的。 |
5 julyclyde 2023-08-17 13:29:23 +08:00 @sbldehanhan 不可能 |
6 julyclyde 2023-08-17 13:30:04 +08:00 你是放后台运行了吧? stdin 为 null |