2

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

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

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

4

1 回答 1

3

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

根据 struct.pack文档,您可以使用格式字符串“ll”创建具有两个长字段的结构,因此以下应按预期设置 SO_SNDTIMEO:

timeval = struct.pack('ll', some_num_secs, some_num_microsecs)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDTIMEO, timeval)
于 2013-07-26T00:17:25.667 回答