2012-02-11 29 views
1

私は、Pythonのソケットモジュールを使用して、いくつかの基本的なUDPクライアント - サーバ通信を行っています。私がする必要があることは非常に簡単です:クライアントはサーバにパケットを送り、サーバの応答はクライアントのパブリックIPアドレス、ポート、サーバに到達したときのUDPパケットのTTLを表す数字です。これは私の主な問題です:recvfrom()などでパケットを受信し、サーバに到達したときのTTL値を読み取る方法はありますか?Pythonで受信UDPパケットのTTLを取得する

ありがとうございました!

マッテオ・モンティ

答えて

2

私はあなたが()(IP_RECVTTL)をSETSOCKOPT、その後のrecvmsgを使用したいと思います。しかし、Pythonはその標準ライブラリにrecvmsgを持っていないようです(http://bugs.python.org/issue6560参照)。おそらく、あなたはPythonによってインポート可能で、あなたが望むことをする小さなCまたはC++の共有ライブラリを書く必要があります。あるいは、私がリンクしているページのパッチを使ってみてください。

0

これは、一般的に私の知る限りでは、ユーザ空間にさらされていません。私はあなたがこのスタックオーバーフローの答えで説明したように、これを実現するためのlibpcapのようなものを使用する必要がありますと思う:

https://stackoverflow.com/a/2362554/864393

1

Python 3.51は、IP_RECVTTLやIP_RECVTOSなどのフラグをサポートしています。私は試してみたが、それは3.xのLinuxカーネルで私のために働いた。

関連する問題