通过套接字流使用datareader类读取图像

时间:2016-07-05 08:10:27

标签: android windows sockets

我正在Windows移动设备和Android上创建应用程序,以通过套接字流建立它们之间的数据传输。我在Android中完成了编码。我将图像转换为android中的字节数组并发送它。

我不知道如何在Windows 10移动版的DataReader类中阅读它。如果有任何好的例子,请告诉我

1 个答案:

答案 0 :(得分:0)

这是MSFT UWP样本的链接,其中包含许多有用的代码示例。 https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DataReaderWriter

我使用的DataReader的代码片段:

var reader = new DataReader(socket.InputStream);
while (true)
{
 uint readLength = await reader.LoadAsync(sizeof(uint));
if (readLength < sizeof(uint))
{
break;
}
uint currentLength = reader.ReadUInt32();
readLength = await reader.LoadAsync(currentLength);
if (readLength < currentLength)
{
break;
}
string message = reader.ReadString(currentLength);
}

reader.DetachStream();

但是,请检查android端,因为它与正常的读写流不同。数据读取器期望消息之前的消息长度。一定要检查endiannes。这是我在C#中使用的片段,它可能很有用。

try
{
    int len = data.Length;
    byte[] lenByte = BitConverter.GetBytes(data.Length);
                if (BitConverter.IsLittleEndian)
                {
                    Array.Reverse(lenByte);
                }           
               foreach (byte b in lenByte)
                { outStream.WriteByte(b); }

               foreach (byte b in data) outStream.WriteByte(b);
                 Console.WriteLine("Message sent");
                }
            catch (Exception e)
            {
               Console.WriteLine(e.Message) ;
            }