LoadAsync WP8.1:部分结果

时间:2014-07-15 11:15:42

标签: c# sockets windows-phone-8 windows-runtime datareader

我目前正在开展一个项目,将Android版的直播SDK移植到WP 8.1版本。我试图通过套接字流请求服务器(SERVER B)的路径列表。 我是这样做的:

DataReader reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
List<byte> byteList = new List<byte>();
while (true)
{
    uint bytesAvailable = await reader.LoadAsync(1);
    if (bytesAvailable == 0) break;
    byte[] arrayByte = new byte[bytesAvailable];
    reader.ReadBytes(arrayByte);
    for (int j = 0; j < arrayByte.Length; j++)
    {
        byteList.Add(arrayByte[j]);
    }
}

由于我不知道初始长度,我每个字节加载它。 当我打电话

byteList.Count();

它总是返回16,这只是部分结果。

奇怪的是,我曾尝试从另一台服务器(服务器A)接收字节以获取频道列表,

// Read from the stream socket
DataReader msgToRead = new DataReader(socket.InputStream);
msgToRead.InputStreamOptions = InputStreamOptions.Partial;
uint bytesAvailable = await msgToRead.LoadAsync(224);
byte[] byteArray = new byte[bytesAvailable];
msgToRead.ReadBytes(byteArray);
byteList = byteArray.ToList();

它一次性加载整个字节。

我尝试应用这段代码与SERVER B进行交互,但byteList仍然返回16的长度。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我的坏。这是我的错。 因此,服务器的工作方式是根据SDK /客户端应用程序中的请求消息(通道ID查询)部署响应。我发现我要求输入错误的通道ID,这就是为什么服务器没有以预期的方式响应的原因。

非常感谢您试图帮助我。