• 締切済み

socket通信でのフィルタリング

linux環境にてC言語でUDPソケットのプログラムを作成しています。 Aの端末からUDPで受信してパケットヘッダの表示及び、宛先アドレスや宛先ポート番号 を書き換えてBの端末にUDPで送信します。 そこで下記の関数を使用して受信しているのですが、パケットキャプチャのように なんでも受信してしまいます。 socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) これを特定のポート番号だけ受信(フィルタ)するにはどのようにすれば良いのでしょうか?

みんなの回答

noname#75489
noname#75489
回答No.2

> しかし、このURLには無差別に受信する方法しかのってません。 無差別に受信した後、TCPパケットのみ処理してヘッダを表示させる実装が記載されているので、これをUDPパケットの特定ポートのみ処理するように変えるだけだと思うのですが...。 この程度の実装も行いたくない、というのであれば、libpcapを使って下さい。

すると、全ての回答が全文表示されます。
noname#75489
noname#75489
回答No.1

> パケットキャプチャのようになんでも受信してしまいます。 > socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) そういう実装だからです。 ちなみに http://okwave.jp/qa4217207.html で同じようなことを質問されてますが、このANo.1の回答にあるURLをちゃんと見てますか? 見てればこんな質問出てこないと思うのですが...

jintoku
質問者

補足

コメント有難うございました。 しかし、このURLには無差別に受信する方法しかのってません。 なのでフィルタリングの質問をしたのですがおかしいでしょうか??

すると、全ての回答が全文表示されます。

関連するQ&A