Python设置tcp发送超时

时间:2013-07-26 00:15:45

标签: python sockets tcp timeout

我正在尝试在Python中设置TCP的SO_SNDTIMEO。根据这里的套接字文档(http://docs.python.org/2/library/socket.html),好像我应该使用setsockopt。

但是,我很难理解为第三个值参数传递的内容。我正在尝试使用struct模块(http://docs.python.org/2/library/struct.html#module-struct),正如文档所建议的那样。但是,我不确定我应该使用什么结构来设置选项。有人有什么想法吗?

(我也试过传递第三个参数的字符串和整数。)谢谢!

1 个答案:

答案 0 :(得分:2)

底层C实现需要一个timeval结构,可以找到here。它由两个长整数组成,第一个以秒为单位表示时间,第二个以微秒为单位表示时间。

根据struct.pack documentation,您可以使用格式字符串'll'创建一个包含两个长字段的结构,因此以下内容应按预期设置SO_SNDTIMEO:

timeval = struct.pack(‘ll’, some_num_secs, some_num_microsecs)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDTIMEO, timeval)