0

インターネットでいくつか読んだことがありますが、C# で TCP 経由でパケットを送信する方法を知りたいと思っています。これは私がこれまでに行ったことです:

        TcpClient client = new TcpClient("myipaddresssecret", 7172);
        Byte[] data = "140049081141799b622d422fcd918d9fb1c55bc3f422";
        NetworkStream stream = client.GetStream();
        stream.Write(data, 0, data.Length);
        client.Close();

(Wireshark からデータを取得)

質問は次のとおりです。C# でインターネット経由で TCP パケットを送信する方法、または私のコードの何が問題なのですか?

4

1 に答える 1

4

Windows で独自に作成した TCP パケットを送信するには、WinPcap などのドライバーが必要です。WinPcap を使用する場合は、多くの .Net ラッパーのいずれかを使用するか、独自のコードを作成できます。Windows API によって提供されるオブジェクト (ソケットなど) のみを使用して raw フレームを送信しても機能しません。

ここを見てください:http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx

唯一の代替手段は、独自のネットワーク監視ドライバーを作成するか、インストールを必要としないがプログラムにシームレスに統合される WinPcap の商用バージョンを購入することです。

Windows 7、Windows Vista、Service Pack 2 (SP2) を適用した Windows XP、および Service Pack 3 (SP3) を適用した Windows XP では、raw ソケット経由でトラフィックを送信する機能がいくつかの方法で制限されています。

TCP データは raw ソケット経由で送信できません。

気が変わった場合は、このライブラリで必要なものを見つけることができるかもしれません: http://www.eex-dev.net/fileadmin/user_upload/apidoc/NetworkLibrary/index.html

WinPcap ラッパーと、パケットを作成および分析するための多くのメソッドとオブジェクトが含まれています。役に立ちますように。

于 2011-06-26T10:31:30.200 に答える