Как отправлять пакеты в C #? - PullRequest
0 голосов
/ 26 июня 2011

Я читал в Интернете, и мне интересно, как отправлять пакеты по TCP в C #. Это то, что я сделал до сих пор:

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

(получил данные от Wireshark)

Итак, вопрос: как отправлять TCP-пакеты через Интернет в C #, или ЧТО не так с моим кодом?

1 Ответ

4 голосов
/ 26 июня 2011

Для отправки собственного созданного TCP-пакета в Windows вам потребуется драйвер, такой как WinPcap.Если вы используете WinPcap, вы можете использовать одну из множества оболочек .Net или написать свой собственный.Отправка необработанного фрейма только с объектами, предоставляемыми Windows API (например, сокетами), не будет работать.

Просто посмотрите здесь: http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx

Единственная альтернатива - создать собственный мониторинг сети.или купить коммерческую версию WinPcap, которая не требует установки, но легко интегрируется в вашу программу.

В Windows 7, Windows Vista, Windows XP с пакетом обновления 2 (SP2) и WindowsВ XP с пакетом обновления 3 (SP3) возможность отправки трафика по необработанным сокетам была ограничена несколькими способами:

Данные TCP не могут отправляться по необработанным сокетам.

Дляна случай, если вы передумаете, возможно, вы найдете в этой библиотеке то, что вам нужно: http://www.eex -dev.net / fileadmin / user_upload / apidoc / NetworkLibrary / index.html

Включает в себяОболочка WinPcap и множество методов и объектов для создания и анализа пакетов.Пусть это будет полезно.

...