在Windows Phone 8中StreamSocket流式传输

时间:2013-07-15 02:32:10

标签: c# stream bluetooth windows-phone-8

我正在尝试在WP8中使用蓝牙从我的应用程序在设备上发送图像,并在我的应用程序中显示在另一台设备上。接收器有一个StreamSocket对象来读取它的数据,如下面的代码

await _dataReader.LoadAsync(4);
uint messageLen = (uint)_dataReader.ReadInt32();
await _dataReader.LoadAsync(messageLen);
string imageData _dataReader.ReadString(messageLen);

然后我必须将所有收到的数据(图像)保存在设备上,然后从存储的数据中创建一个Stream对象,将其提供给BitmapSource.SetSource(Stream)函数,以便能够在我的应用程序上显示此图像

var image = new BitmapImage();
image.SetSource(stream);

我想做的就是不要跳过这个双重工作并直接将StreamSocket对象(从蓝牙连接)转换为Stream对象并制作BitmapSource图像。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

Yo可以将收到的数据存储在byte[]缓冲区中,然后从中创建流。请尝试以下方法:

    await _dataReader.LoadAsync(4); 
    uint messageLen = (uint)_dataReader.ReadInt32();
    await _dataReader.LoadAsync(messageLen); 
    byte[] buffer = new byte[messageLen];
    _dataReader.ReadBytes(buffer);
    MemoryStream ms = new MemoryStream(buffer);
    var image = new BitmapImage();
    image.SetSource(ms);