2014-01-04 5 views
0

Я пишу приложение для хранения окон, использующее сокеты для отправки данных по протоколу tcp. Я положил эту статью в качестве отправной точки: http://msdn.microsoft.com/en-us/library/windows/apps/jj150599.aspx но я не могу понять некоторые моменты: 1. Когда сервер посылает мне данные (клиент), автоматическое «толкает» на считыватель DataReader? 2. Есть ли какое-либо событие, которое вызывается при получении данных, или я могу вручную искать свойство UnconsumedBufferLength в читателе? 3. посылает ли данные серверу, когда я вызываю witer.WriteByte (byte)?Windows store app sokets

ответ

0

Невозможно создать событие, когда будут доступны данные. Вы должны постоянно смотреть, содержит ли ваш входной поток данные, если вы можете их прочитать. Для передачи данных можно использовать следующие методы:

var writer = new DataWriter(ActiveSocket.OutputStream); 
writer.WriteBytes(data); 
writer.WriteString(); 
await writer.StoreAsync(); 
await writer.FlushAsync(); 

Чтобы прочитать данные, которые вы только вызвать Read метод DataReader класса.

0

Если вы можете использовать любой другой протокол (например, REST или SignalR), я рекомендую вам это сделать. Сокеты TCP/IP являются чрезвычайно низкоуровневыми (и чрезвычайно трудно получить право без большого опыта).

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