Проблемы с сокетом C # UDP - PullRequest
       30

Проблемы с сокетом C # UDP

0 голосов
/ 16 декабря 2011

Я пытаюсь отправить несколько пакетов UDP на сервер. Я использую Wireshark, чтобы контролировать свою деятельность. Когда я отправляю пакет, wireshark сообщает, что контрольная сумма моего заголовка неверна.

wireshark

В настройках wireshark опция " Подтвердить контрольную сумму UDP, если это возможно"" отключена .

this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
this.destination = new IPEndPoint(IPAddress.Parse("***.***.***.***"), 80);

this.socket.Connect(this.destination);
this.socket.Send(Encoding.ASCII.GetBytes("foo"));
this.socket.Shutdown(SocketShutdown.Both);
this.socket.Disconnect(true);

Я что-то забыл? Нужно ли устанавливать конкретные параметры? Помощь очень ценится!

1 Ответ

3 голосов
/ 16 декабря 2011

Известная проблема - обратите внимание на «возможно, вызвано разгрузкой контрольной суммы IP». Из вики Wireshark :

Большинство современных операционных систем поддерживают некоторую форму разгрузки сети, когда некоторая сетевая обработка происходит на сетевой карте вместо ЦП.
[...]
В системах, которые поддерживают разгрузку контрольной суммы, контрольные суммы IP, TCP и UDP рассчитываются на NIC непосредственно перед их передачей по проводам.В Wireshark они отображаются как исходящие пакеты, помеченные черным с красным текстом, и примечание [неверно, должно быть xxxx (может быть вызвано "разгрузкой контрольной суммы TCP?").отключите эту функцию для вашей конкретной ОС.

...