当前位置: 代码迷 >> Windows Mobile >> Windows Mobile使用C#的HttpWebResponse假死有关问题,请,不胜感激
  详细解决方案

Windows Mobile使用C#的HttpWebResponse假死有关问题,请,不胜感激

热度:212   发布时间:2016-04-25 08:05:09.0
Windows Mobile使用C#的HttpWebResponse假死问题,请高手指点,不胜感激!
在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一下有很多现成的。



【祝你好运】
  相关解决方案