我目前正在使用python上的服务器+客户端组合,正在使用TCP套接字。从网络类中,我知道应该逐步关闭TCP连接,首先发送信号,它要关闭连接并等待确认,然后另一端也这样做。之后,可以安全地关闭插座。
我已经在python文档函数中看到过socket.shutdown(flag)
,但是我看不到如何在理论上关闭TCP套接字的这种标准方法中使用它。据我所知,它只是阻止阅读,写作或两者兼而有之。
在python中关闭TCP套接字的最好,最正确的方法是什么?是否有用于关闭信号的标准功能,或者我需要自己实现这些功能?
根据python文档说:
严格来说,应该在关闭套接字之前在套接字上使用shutdown。关机是另一端套接字的建议。根据您通过的论据,它可能表示“我不再发送,但我仍会听”或“我不在听,好骑!”。但是,大多数套接字库都习惯于程序员忽略使用这种礼节,以至于通常关闭与shutdown()相同;关闭()。因此,在大多数情况下,不需要显式关闭。
我认为关闭TCP连接的最正确方法是在关闭连接之前使用shutdown,因为close
它不是原子的!这可能会导致一些错误。假设您正在使用close
不带功能shutdown
且数据未正确发送到服务器的情况,同时python关闭连接并且服务器无法回复客户端,现在另一端的套接字可能会无限期挂起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句