为什么我的Python套接字只在程序结束后才发送数据?

时间:2015-10-06 19:01:57

标签: python sockets

我使用Python通过套接字发送信息。我正在使用函数sendall,但实际上直到程序结束才发送数据。当我在发送数据后输入10秒延迟时,连接另一端的计算机在延迟完成并且程序结束之前不会接收数据。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(10)
conn, addr = s.accept()

data = Arbitary
conn.sendall(data)   #Send the data
print "This is after sending"
time.sleep(10)
print "This is after delay"

如果连接的另一端的计算机在发送后立即接收数据,而不是在Python程序结束时,我该怎么办?

我不认为其他计算机上的代码是必要的,但如果我需要添加它,请告诉我。

1 个答案:

答案 0 :(得分:2)

在我看来,您应该在conn.close()之后立即使用conn.sendall关闭Python代码中的连接。也许这些数据存储在缓冲区中(连接尚未关闭,因此您可能希望发送更多数据,以便为什么要浪费资源并连续发送?)

仅在脚本关闭时发送数据的原因是套接字会自动刷新并关闭。