Compact Framework для подключения к веб-сервису - Как использовать рандомизацию исходного порта - PullRequest
2 голосов
/ 12 мая 2011

Компактный каркас 3,5
Windows CE 6.0 R3
BSP на основе Atmel

Ситуация : несколько устройств из одного шлюза, подключенного к веб-службе за брандмауэром. Все устройства устанавливают соединение с одним и тем же IP-адресом и портом источника.

Проблема : По сути, новое устройство пытается подключиться к веб-службе, брандмауэр считает, что это существующее подключение, отправляет пакет RST. Устройство последовательно увеличивает исходный порт и пытается снова. Если есть 100 устройств, это 100 RST подряд, что занимает очень много времени. (см. http://www.fuzeqna.com/sonicwallkb/consumer/kbdetail.asp?kbid=8013&formaction=catalert)

Решение, согласно статье, заключается в рандомизации исходного порта. Как определяется порт источника и как его настроить? Я даже не уверен, где это делается (CE, CF, BSP).


Edit:
Нашел эту статью о ServicePoint . ServicePoint для класса HttpWebRequest выглядит многообещающе, но в спецификации говорится:

Windows Mobile для КПК, Windows Мобильный телефон для смартфонов, Windows CE Примечание платформы: это свойство имеет значение null пока запрос не будет отправлен из-за дополнительная сеть передачи требуется.

1 Ответ

1 голос
/ 20 мая 2011

Хорошо, значит, проблема в winsock.dll. В итоге мы создали экземпляр класса Socket и связали его с конечной точкой Loopback случайное число раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...