Почему Socket доступен> 0 только после того, как был возвращен из AcceptAsync ()? - PullRequest
1 голос
/ 17 июля 2011

Я столкнулся с этой странной проблемой при работе с высокопроизводительными сокетами .NET. Сразу после получения нового Socket с помощью AcceptAsync () op, свойство [Available] равно некоторому ненулевому значению , обычно 64. При ближайшем рассмотрении я вижу, что все доступные байты 'значения в буфере сокета установлены в 0.

На стороне клиента, единственная запущенная операция - ConnectAsync (). Нет SendAsync (), нет ничего.

Это относится к включенному состоянию Nagle.

Кто-нибудь когда-либо сталкивался с этой проблемой?

P.S .: Я буду обновлять и публиковать некоторый код, если это необходимо, но это своего рода большой фрагмент.

1 Ответ

0 голосов
/ 19 июля 2011

Я отвечу на это сам.

Экземпляры SocketAsyncEventArgs, используемые клиентами для подключения к серверу, имели свойство [Count] (число байтов, установленное в общем буфере SAEA) больше 0. ВВ результате операция ConnectAsync (), инициированная клиентами, будет инициировать обратный вызов ввода-вывода AcceptAsync () на сервере вместе со значением [BytesTransfered], равным указанному (практически) соединению [Count]и отправка установленного буфера за один раз "].

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