2013-07-26 83 views
0

我想在Python中設置TCP的SO_SNDTIMEO。基於這裏的套接字文檔(http://docs.python.org/2/library/socket.html),似乎我應該使用setsockopt。Python設置tcp發送超時

但是,我很難理解要傳入第三個值參數的內容。正如文檔所建議的那樣,我試圖使用結構模塊(http://docs.python.org/2/library/struct.html#module-struct)。但是,我不確定我應該使用什麼結構來設置選項。任何人有任何想法?

(我也試過爲第三個參數傳遞字符串和整數。)謝謝!

回答

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) 
+0

這偉大的工作。謝謝。 –