C # - WireShark обнаруживает входящие пакеты, но приложение не получает их - PullRequest
1 голос
/ 03 декабря 2010

У меня странная проблема. У меня есть клиент, отправляющий пакеты на мой сервер, но мой сокет UDP сервера никогда не получает их. То же самое происходит и наоборот, если я отправляю, а он пытается получить.

Проверьте это изображение, снятое с wireshark: http://img263.imageshack.us/img263/2636/bokus.png

Я привязал свой UDP-сокет к EndPoint 192.168.2.3, который является внутренним IP-адресом сервера, и портом 9998. Клиент отправляет данные на мой IP-адрес, который затем должен быть перенаправлен на локальный сервер. Как вы можете видеть, wireshark четко обнаруживает входящие пакеты для 192.168.2.3 с портом назначения 9998, но ничего не доставляется!

(... почему в порту назначения указано другое значение между прочим?)

1 Ответ

0 голосов
/ 03 декабря 2010

Еще нужно следить за тем, чтобы на любом брандмауэре, на котором вы работали, была установлена ​​настройка правил, разрешающая обмен данными через порт 9998.

Если бы мне пришлось угадывать (нужно было бы узнать ваш принимающий код C #, чтобы знать), похоже, вы пытаетесь получать пакеты UDP, но используете протокол TCP на стороне клиента. (Или я могу просто неправильно понять текст вашего скриншота.)

Нет необходимости «прослушивать» соединение при использовании UDP. У пакетов UDP нет протокола подключения / отключения. Они также не гарантируют, что пакеты будут получены в том же порядке, в котором они были отправлены.

попробуйте использовать что-то подобное в вашем клиенте C # и посмотрите, получите ли вы данные.

var udpClient = new System.Net.Sockets.UdpClient(9998);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
...