Как я могу узнать, есть ли данные с сервера в сокете? - PullRequest
0 голосов
/ 13 октября 2018

Я кодирую проект сокет-клиента.

Сервер не создается нами, и он будет время от времени отправлять данные клиенту.

Так что я должен использовать циклЗадача проверить, всегда ли есть данные.

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

В WinForm,Я использовал Socket.Available, чтобы проверить, есть ли на самом деле получение данных, а затем прочитать данные.

Однако в UWP, похоже, нет свойства Available.Я использовал код для получения данных в UWP, как показано ниже:

Stream streamIn = Socket.InputStream.AsStreamForRead();                        
streamIn.Flush();
StreamReader reader = new StreamReader(streamIn);
string ResponseString = reader.ReadLine();    

Но, как я сказал выше, код выполняется без получения данных, сокет UWP остановится как Winform.

Как я могу решить эту проблему, или есть новое свойство, которое может заменить Available winform?Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

В UWP вы можете использовать StreamSocket соединение и создать фоновую задачу с помощью SocketActivityTrigger .SocketActivityTrigger активирует фоновую задачу при получении пакета.

Дополнительную информацию см. Сетевые коммуникации в фоновом режиме .

Вот Триггер активности сокетаобразец сокета потока для справки.

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