C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: Socketでパケットキャプチャするも受信パケが取得できない


(過去ログ 110 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■65584 / inTopicNo.1)  Socketでパケットキャプチャするも受信パケが取得できない
  
□投稿者/ Zen (1回)-(2013/03/09(Sat) 19:21:35)

分類:[C#] 

2013/03/09(Sat) 19:30:24 編集(投稿者)
2013/03/09(Sat) 19:29:51 編集(投稿者)
2013/03/09(Sat) 19:29:42 編集(投稿者)

<pre><pre>こんばんは。Zenと申します。

C#とTCP/IPの勉強をかねて、
Socketを使用してパケットキャプチャを作ろうとしております。

【ソースコードここから】
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Socket socket = new Socket(
AddressFamily.InterNetwork,
SocketType.Raw,
ProtocolType.IP
);

socket.SetSocketOption(
SocketOptionLevel.IP,
SocketOptionName.HeaderIncluded,
true
);

socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.2"), 0));
socket.IOControl(IOControlCode.ReceiveAll, new byte[] { 1, 0, 0, 0 }, new byte[] { 0 });

byte[] buffer = new byte[socket.ReceiveBufferSize];

while (true)
{
// パケット受信
socket.Receive(buffer);

int Protocol = buffer[9];

IPAddress SourceAddress = new IPAddress(BitConverter.ToUInt32(buffer, 12));
IPAddress DestinationAddress = new IPAddress(BitConverter.ToUInt32(buffer, 16));

Console.Write("Protocol: {0}", Protocol);
Console.WriteLine();

Console.Write("Send {0} -> {1}", SourceAddress, DestinationAddress);
Console.WriteLine();

}
}
}
}

【ソースコードここまで】

試しに動かしてみますと、何かしらキャプチャできているところまでは確認できますが、
私の環境ですと、SourceAddressには必ず、「192.168.1.2」が記載されており、
送信パケットのみキャプチャできているようにみえます。

いろいろググった結果、Windows7では、強化されたファイアウォールにより、受信パケットが拾えないようになっているとのことで、
@ConsoleApplication1.exe を例外設定に登録し、パケットの受信を可能にした(はず!)
AVisualStudio本体も例外設定に登録し、パケットの受信を可能にした(はず!)

なのですが、改善される様子もなく、困り果てております。
何か例外設定のやり方がマズかったのかと困惑しておりますが、皆様の知恵を拝借したい所存です。

ちなみに、Windows Network Monitorでパケットキャプチャを行った際には、送受信共にキャプチャできております。

参考にしたURLは以下の通りです。
ttp://kazuhirokazu.hateblo.jp/entry/20111223/1324574391
ttp://kzpro.iga-log.com/c-/-c--%20system.net.sockets.socket%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%83%A2%E3%83%8B%E3%82%BF%20-3-

ttp://wiz.came.ac/blog/2011/06/netwindows7.html

環境を書き忘れたので追記
OS:Windows7 HomePremium
VS:VisualStudio2012 Express for Desktop(管理者モードで実行)
ネットワーク:有線ルータを経由(Corega CG-BARFX3)

不足の情報があればお申し付けくださいませ。</pre></pre>
引用返信 編集キー/
■65586 / inTopicNo.2)  Re[1]: Socketでパケットキャプチャするも受信パケが取得できない
□投稿者/ Zen (2回)-(2013/03/09(Sat) 20:26:45)
とりあえず、自己解決?いたしました。

Windowsファイアウォールを一時的に無効にする。
または受信時の規則=すべてのプログラムに対して、接続を許可する旨設定いたしましたところ、
とりあえずうまく動作しました。

が、しかし・・・いつまでもこの状態(ファイアウォール無効など)を続けることはあまり望ましくないと
思うのですが、開発環境で限ればみなさんどのような対応をとられるのでしょうか。

よろしければ、参考までに教えていただければと思います。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -