我正在尝试在Python中设置TCP的SO_SNDTIMEO。根据这里的套接字文档(http://docs.python.org/2/library/socket.html),好像我应该使用setsockopt。
但是,我很难理解为第三个值参数传递的内容。我正在尝试使用struct模块(http://docs.python.org/2/library/struct.html#module-struct),正如文档所建议的那样。但是,我不确定我应该使用什么结构来设置选项。有人有什么想法吗?
(我也试过传递第三个参数的字符串和整数。)谢谢!
答案 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)