我使用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程序结束时,我该怎么办?
我不认为其他计算机上的代码是必要的,但如果我需要添加它,请告诉我。
答案 0 :(得分:2)
在我看来,您应该在conn.close()
之后立即使用conn.sendall
关闭Python代码中的连接。也许这些数据存储在缓冲区中(连接尚未关闭,因此您可能希望发送更多数据,以便为什么要浪费资源并连续发送?)
仅在脚本关闭时发送数据的原因是套接字会自动刷新并关闭。