2

Python で TCP の SO_SNDTIMEO を設定しようとしています。ここのソケット ドキュメント ( http://docs.python.org/2/library/socket.html ) に基づくと、setsockopt を使用する必要があるようです。

ただし、3 番目の値パラメーターに何を渡すかを理解するのに苦労しています。ドキュメントで推奨されているように、構造体モジュール ( http://docs.python.org/2/library/struct.html#module-struct ) を使用しようとしています。ただし、オプションを設定するために実際にどの構造体を使用する必要があるのか​​ わかりません。誰にも考えはありますか?

(3 番目の引数に文字列と整数の両方を渡すことも試みました。) ありがとう!

4

1 に答える 1

3

基礎となる C 実装は、ここで見つけることができる timeval 構造体を想定しています。これは 2 つの long int で構成され、最初の整数は秒単位の時間を表し、2 番目の整数はマイクロ秒単位の時間を表します。

struct.pack documentationによると、フォーマット文字列「ll」を使用して2つの長いフィールドを持つ構造体を作成できるため、次のように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 に答える