2012-07-30 70 views
0

我有套接字编程的问题,并且花费很多时间来查找错误,但是没有找到。请有人帮助我。为什么在python中阻塞模式不会阻塞recv函数

Server代码:

import socket 
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
server_socket.bind(("localhost",5001) 
server_socket.listen(10) 
client_socket, address = server_socket.accept() 
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
server_socket.bind(("localhost",5001)) 
server_socket.listen(10) 
client_socket, address = server_socket.accept() 
while True: 
    temp = client_socket.recv(100) 
    print (len(temp)) 
    print ("Recv isn't blocked") 
client_socket.close() 

客户端代码:

import socket 
import io 

client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
client_socket.connect(("localhost",5001)) 
print("send data finised") 

,当我运行程序,但客户端不发送任何内容的服务器,但的recv()在服务器仍然运行的功能,我不明白为什么,请帮助我。

回答

0

因为你的客户端程序退出了,socket是关闭的吗?

+0

非常感谢你!我解决了它:)。这里发生错误是因为我的客户端在服务器接收数据之前退出。 – nguyenngoc101 2012-07-30 09:25:49