在python脚本中,我使用以下命令激活了TCP Keepalive:
x = s.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
我的目标是,如果5分钟内没有传输(*),则关闭套接字连接。我在Windows上工作,python脚本只接收数据,不向客户端程序发送数据。
我知道的是,默认情况下,如果2小时内没有传输,那么只有我可以使用try and except关闭连接。我知道,对于windows,我可以通过登录来手动减少等待时间。但有没有办法,我可以修改它从我的脚本?
(*)这里的“无传输”是指“有东西在网络上悄悄地吃掉数据包”,而不是“我不想发送任何东西”
可以使用setsockopt()在已打开的套接字上设置TCP keepalive计时器。
对于windows refer to msdn上的等效选项。 通过Python source查看,似乎需要使用类似于Unix中的
sock.setsockopt
设置SO_KEEPALIVE
,并且[可选地]?]用sock.ioctl
设置SIO_KEEPALIVE_VALS
。对于windows,在python中:
这将使socket保持活动状态,保持活动状态的时间为10秒,保持活动状态的时间间隔为3秒。
更详细的信息here
相关问题 更多 >
编程相关推荐