我有这个简单的服务器脚本。我对这个脚本的目标是:
- 等待客户端连接
- 接收来自客户端的按摩,直到客户端断开连接
- 一旦客户端断开连接,等待另一个客户端连接
- 接收按摩直到客户端断开连接
- 重复...
import socket
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bind(("",5000))
server_socket.listen(5)
print "Awaiting Client connection"
client_socket, address =server_socket.accept()
print "Connection established.. with ",address
while True:
data=client_socket.recv(512)
if not data:
client_socket.close()
print "Client disconnected, Awaiting new connections..."
client_socket, address =server_socket.accept()
print "Connection from ",address
else:
print "RECIEVED:",data
我的问题是,即使当我在一对 pc 上测试它时脚本似乎正在工作,我注意到它在收到来自客户端的连接后,即 line no 7
print "Connection established.. with ",address
在客户端发送任何消息之前,python shell 窗口似乎没有响应(如果我尝试移动 shell 窗口则没有响应)。
据我了解,如果没有来自客户端的传入消息,client_socket.recv(512)
则只会等待来自客户端的数据。
但是为什么它变得没有反应?为了让事情更清楚,
-脚本工作得很好(它接收数据并从屏幕上打印出来,如果客户端断开连接,则等待新连接)
- 控制台窗口中的光标停止闪烁
- 当我尝试移动控制台窗口时,它变得无响应并且窗口给我一条消息“该程序已停止响应”