【发布时间】:2016-11-06 23:42:08
【问题描述】:
我正在 Windows mobile 和 Android 上创建一个应用程序,以通过套接字流在它们之间建立数据传输。我在 Android 中完成了编码。我将图像转换为android中的字节数组并发送它。
我不知道如何在 Windows 10 移动版的 DataReader 类中读取它。如果有什么好的例子,请告诉我
【问题讨论】:
我正在 Windows mobile 和 Android 上创建一个应用程序,以通过套接字流在它们之间建立数据传输。我在 Android 中完成了编码。我将图像转换为android中的字节数组并发送它。
我不知道如何在 Windows 10 移动版的 DataReader 类中读取它。如果有什么好的例子,请告诉我
【问题讨论】:
这是包含许多代码示例的 MSFT UWP 示例的链接,这将很有帮助。 https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DataReaderWriter
我使用的 DataReader 的代码 sn-p:
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 端进行检查,因为它与流的正常读写不同。数据阅读器期望消息之前的消息长度。确保也检查字节序。这是我在 C# 中使用的可能有用的 sn-p。
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) ;
}
【讨论】: