带有 windows phone 7 的协议缓冲网络
Posted
技术标签:
【中文标题】带有 windows phone 7 的协议缓冲网络【英文标题】:Protocol buffer net with windows phone 7 【发布时间】:2010-07-13 09:27:36 【问题描述】:我正在尝试从 Windows Phone 7 应用程序的协议缓冲区格式的服务器下载响应。
我正在尝试使用 WebClient 执行此操作,我的问题如下。
WebClient只有两种下载方式
DownloadStringAsync(new Uri(url));
和
OpenReadAsync(new Uri(url));
但是这两种方法都不好检索响应,因为响应大小应该有16个十六进制字符(080118CBDDF0E104),但是这两种方法得到的字符串和流的大小只有8。
所以我正在寻找一种方法来解决我的问题。 我找到了一个 C#
public static T DownloadProto<T>(this WebClient client, string address)
byte[] data = client.DownloadData(address);
using (var ms = new MemoryStream(data))
return Serializer.Deserialize<T>(ms);
开启 http://code.google.com/p/protobuf-net/source/browse/trunk/BasicHttp/HttpClient/ProtoWebClient.cs?spec=svn340&r=340
但此方法已被删除或尚未在 Windows Phone 7 开发工具包上实现。
【问题讨论】:
确实;我根本没有时间查看“v2”的套接字/等方面,它是在电话 7 上工作的 v2。但是,这里真正的问题是:什么数据来自网络?如果你有一个小而完整的例子我可以玩,我很可能可以用它来帮助完成这个区域...... 但是;这里的主要问题似乎是将完整的片段发送给客户端 - 这应该与实际的序列化引擎无关......? 【参考方案1】:你是如何从流中读取的?
如果您将其作为字符串读取,那么它可能会读取每个字符两个字节 - 而不是使用
var buf = new byte[16];
var actual = stream.Read(buf, 0, buf.Length);
【讨论】:
以上是关于带有 windows phone 7 的协议缓冲网络的主要内容,如果未能解决你的问题,请参考以下文章
c# Windows Phone 7 中的 Facebook 聊天客户端