Я пытаюсь прочитать ответ с веб-сайта с помощью кода, прослушивая сырой сокет, хотя до сих пор я мог читать исходящие запросы, отправленные моим компьютером, а не входящие ответы, которые меня действительно интересуют. Как я могу читать входящие ответы?Невозможно прочитать входящие ответы с использованием сырых сокетов
EDIT: Использование Wireshark Я пришел, чтобы найти, что данные, которые я ищу, отправляются через TCP, я полагаю.
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified);
IPAddress localIP = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];
listener.Bind(new IPEndPoint(localIP, 0));
byte[] invalue = new byte[4] { 1, 0, 0, 0 };
byte[] outvalue = new byte[4] { 1, 0, 0, 0 };
listener.IOControl(IOControlCode.ReceiveAll, invalue, outvalue);
while (true)
{
byte[] buffer = new byte[1000000];
int read = listener.Receive(buffer);
if (read >= 20)
{
Console.WriteLine("Packet from {0} to {1}, protocol {2}, size {3}",
new IPAddress((long)BitConverter.ToUInt32(buffer, 12)),
new IPAddress((long)BitConverter.ToUInt32(buffer, 16)),
buffer[9],
buffer[2] << 8 | buffer[3]
);
}
}
новый IPEndPoint (localIP, 0) указывает, что вы хотите прослушивать порт 0. Это порт, к которому подключается удаленный сервер? –
@RobertLevy - новый IPEndPoint (localIP, 0) 'указывает, что вам все равно, какой локальный порт вы используете. Система выберет один, когда (и если) вам понадобится. (Bind, Send, Receive, ...) Для RAW-сокета с набором ReceiveAll вам никогда не понадобится один, поскольку вы получаете все. –