Async BeginSend / EndSend не отправляет столько данных, сколько говорит - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть встроенное устройство, с которым я играю;Отправка некоторых данных с ПК.Со встроенным устройством я говорю не о WindowsCE / Linux, а о микроконтроллере с дрянным стеком TCP-IP и несколькими килобайтами оперативной памяти.

Проблема возникает, когда я пытаюсь отправить несколько пакетов и в конечном итоге залить драйвер устройства.

В чем проблема?

BeginSend и EndSend на ПК работают без ошибок, и общая длина данных, помещаемых в BeginSend, равна возвращенной длине EndSend.Но проверка количества данных [байтов?], Отправленных с помощью Wireshark, показывает, что пакетов не так много, как должно быть, и эта разница составляет несколько КБ.Итак, BeginSend и EndSend работают так, как будто они закончили, но на самом деле это не так.

Я попытался переключить Socket.NoDelay, но, похоже, это не работает.Даже если я установил Socket.NoDelay = true, более крупные пакеты отправляются, поэтому это выглядит так, как будто это не имеет никакого эффекта.

Я, конечно, использую сокеты TCP.

Отправка такого большого количества данных изWebServer (IIS) работает нормально.

Есть ли какие-либо проблемы, о которых мне следует знать?

1 Ответ

0 голосов
/ 08 апреля 2011

У меня есть встроенное устройство, и я играю, отправляя данные с ПК. В качестве встроенного устройства я не говорю о WindowsCE / Linux, но о микроконтроллере, дрянном стеке TCP-IP и нескольких КБ ОЗУ.

Отправляете ли вы из приложения .Net на это устройство?

BeginSend и EndSend на ПК работают без ошибок, и общая длина данных, помещаемых в BeginSend, равна общей сумме возвращенной длины EndSend. Но проверка количества данных, отправленных с помощью Wireshark, показывает, что пакетов не так много, как должно быть, и эта разница составляет несколько КБ.

Как вы пришли к такому выводу?

Отправка такого количества данных из WebServer (IIS) работает нормально.

Пожалуйста, уточните, что вы имеете в виду? Вы отправляете через HTTP на встроенное устройство, и это работает?

Есть ли какая-либо проблема, о которой я должен знать?

В чем проблема? Встраиваемое устройство не получает все? Если так, как вы пришли к такому выводу?

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