Простой пример C # Metro StreamSocket - PullRequest
4 голосов
/ 15 марта 2012

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

Я ищу пример C # StreamSocket, который может подключаться к сокету, считывать данные из сокета (я точно не знаю, когда будут поступать данные, поэтому я всегда хочу слушать новые данные) и записывать данные в это в произвольные времена. Это было легко выполнить в любой среде программирования (включая .NET), но я не могу сделать это в Metro без исключений (ObjectDisposedExceptions при попытке записи при одновременном ожидании входящих данных).

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

1 Ответ

1 голос
/ 10 апреля 2012

Если вы настроили DataReader на входящем StreamSocket, вы можете установить его InputStreamOptions в InputStreamOptions.Partial. Это позволит вам читать данные по мере их поступления и динамически решать, как их обрабатывать.

var dr = new DataReader(socket.InputStream);
dr.InputStreamOptions = InputStreamOptions.Partial;
var stringHeader = await dr.LoadAsync(512);

В этом посте также упоминается http://babaandthepigman.wordpress.com/2012/04/07/streamsocket-example-c-metro/

...