在WindowsMobile平台上,用C#的HttpWebRequest和HttpWebResponse类编写通信程序,代码片度如下:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
req.Accept="*/*";
req.UserAgent = "Mozilla/4.0(compatible;PocketIE 5.0;Windows CE 5.2)";
req.Method = "POST";
req.ContentLength = pd.Length;
req.ContentType = "application/binary";
Stream outputStream = req.GetRequestStream();
outputStream.Write(pd, 0, pd.Length);
outputStream.Flush();
outputStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();//卡在了这一句上
byte[] ps = new byte[res.ContentLength];
int totalBytesRead = 0;
……………………………………………………
程序卡在了如上位置上,用Cellular Emulator观察,确实有数据传出和传入。换了WM6和WM6.5两个平台,都卡住了。换了一部i780真机也卡住了。卡住的现象就是,在WM上,程序界面没有任何响应,VS中也不报错。
同样的代码片段,放在PC上运行,可以正常返回结果。
我的目标平台是WM5.0 PocketPC,用的.NET CF 3.5
请大家帮帮忙,不胜感激哈!!
------解决方案--------------------
【解决办法】:手机上使用Socket之前必须的初始化一下GPRS链路,才可以.
【问题原因】:PC上使用不需要GPRS所有可以直接使用。完全正常。
但是在手机上,TCP协议的底层【物理链路】是走GPRS的,所有你在用socket的时候程序从应用层在到传输层,然后到网络层。。。都是正常的。可是再导物理链路层的时候出现问题了。
初始化也很简单,google一下有很多现成的。
【祝你好运】