У меня есть небольшое приложение UWP, которое использует StreamSocket . Доступ к сокету осуществляется с помощью метода socket.InputStream.AsStreamForRead () .
Это прекрасно работает практически для всех размеров входящих данных (от 10 до 6000 байтов). Но при использовании перегрузки с размером буфера сокет зависает при получении большего количества данных. Поэтому 6000 байтов больше не принимаются, если для буфера установлено значение 4096. Даже при чтении данных кусками по 10 байт это не работает. Метод ReadAsync зависает навсегда.
Я не уверен, что это ошибка. Я ожидаю, что я все еще могу получить данные. Если нет, мне нужно знать размер или поведение этого буфера по умолчанию.
Пример кода:
StreamSocket socket = InitSomewhere();
var readStream = socket.InputStream.AsStreamForRead(500);
var buffer = new byte[100]
readStream.ReadAsync(buffer, 0, 100) // Hangs here if received > 500!
У кого-нибудь есть идея?
С уважением, Кристан