Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.212.99] |
|
Сообщ.
#1
,
|
|
|
Здрасте, возникло несколько воросов о сокетах. Мне требуется контролировать данные другой программы. Скачал MJsniffer в качестве примера.
using (Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)) { socket.Bind (new IPEndPoint (IPAddress.Parse ("10.10.13.44"), 0)); socket.SetSocketOption (SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true); socket.IOControl (IOControlCode.ReceiveAll, new byte[4] { 1, 0, 0, 0 }, new byte[4]); ... Console.ReadKey (); } Собственно вопросы: 1) Такой сокет читает все данные подряд, как то можно на стадии создания сокета уточнить какие именно пакеты мне нужны, т.е. мне известен порт и тип протокола(Tcp). Или это только из парсинга заголовков IP и Tcp пакетов узнать можно? 2) Как сделать так что бы сокет читал данные с любых адресов. Если IPAddress.Parse ("10.10.13.44") заменить на IPAddress.Any, то на строке socket.IOControl(...) выскакивает ошибка о недопустимых параметрах. 3) И ещё, как не просто слушать данные с порта, но ещё перехватывать их, т.е. изменять и пускать в программу дальше? п.с. Буду рад любой приличной литературе по сокетам, желательно на русском. В мсдн ваще с этим глухо. |
Сообщ.
#2
,
|
|
|
TerraGhost
попробуй поискать готовые примеры на codeproject |
Сообщ.
#3
,
|
|
|
Оттуда и качал примеры снифферов
|