让智能手机和居家电脑互联互通(WM6 GPRS).doc_第1页
让智能手机和居家电脑互联互通(WM6 GPRS).doc_第2页
让智能手机和居家电脑互联互通(WM6 GPRS).doc_第3页
让智能手机和居家电脑互联互通(WM6 GPRS).doc_第4页
让智能手机和居家电脑互联互通(WM6 GPRS).doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

让智能手机和居家电脑互联互通(WM6 GPRS) GPRS资费受3G的影响逐渐降低,目前5元包月即可以获得30M的流量,而cmwap日渐式微大有被cmnet取代之势(北京GPRS套餐其流量已不区分cmwap和cmnet),而后者可无障碍地和因特网互联互通,这种变化更促进了GPRS的进一步应用。原以为一旦GPRS连接建立,手机与接入因特网的PC通信和PC之间的通信一样简单,通过简单配置后就可以用socket进行互联,后来深入研究才发现暗礁重重,要想完美实现手机和PC的互联互通还真得费一番功夫。试验平台如下:1、 智能手机Windows Mobile 6.0;2、 一台通过ADSL上网的PC(动态公网IP,每次拨号连接后的IP都很随机);3、 一个个人网站空间;实现思路如下:1、 开发一个运行在PC上的网络服务程序(服务端),功能包括:获取PC拨号后的动态公网IP,把该IP和端口信息上传到有固定域名的个人网站空间(当然这个功能也可以用花生壳之类的工具完成域名到动态IP的绑定);提供特定的功能的网络服务(如让家中的电脑执行如下载指定的文件,打开摄像头等任务,甚而如果PC连接了家庭控制系统,可以遥控家里的空调、热水器等家电进行工作)。2、 开发运行在Windows Mobile 5.0/6.0上的客户端控制程序,功能包括:可从指定URL获得PC服务程序上传的IP和端口信息;通过获得的IP、端口和PC上的服务程序进行连接并通信,从而得以远程控制居家的PC。网络拓扑图: 说明: PC上传公网IP和端口号到Web服务器; 手机从Web服务器获取PC的IP和端口号; 手机和PC直接通信互联;实际效果图: 说明: 选择GPRS接入点(要选择Internet设置),并接入; 探测居家PC的IP和端口(从Web Server获取); 连接居家PC,并进行通信测试; 说明:PC服务程序 相关代码部分:1、 GPRS连接相关代码已有很多网上文章进行了介绍,本部分的代码主要来自于网络,并进行了些微调整,详情可参见:/mugua/archive/2009/04/11/1433509.html本打算让程序也可以通过cmwap进行连接,调试时程序也可以和代理服务器27:80进行连接,但是相关的Http请求总是返回出错,查看了相关文章,估计移动对27代理还是做了一定的限制的,幸好cmnet目前已可取代cmwap,所以我们姑且先用cmnet方式吧,不过如果在cmwap上网友有更好的解决方案,也希望能share一下。2、 GPRS文件下载(下载IP和端口信息)奇怪的是下列代码当手机通过Microsoft ActiveSync连接时,可以正确获取,但是建立GPRS连接后则代码执行失败。public static string DownLoadFile(string fileURL) StreamReader rdr = null; FileStream wrtr = null; string localFileName = string.Empty; try HttpWebRequest req = (HttpWebRequest)WebRequest.Create(fileURL); req.Method = GET; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); long len = resp.ContentLength; Stream respStream = resp.GetResponseStream(); localFileName = Program Files + fileURL.Substring(fileURL.LastIndexOf(/) + 1); wrtr = new FileStream(localFileName, FileMode.Create); byte inData = new byte4096; int bytesRead = respStream.Read(inData, 0, inData.Length); while (bytesRead 0) wrtr.Write(inData, 0, bytesRead); bytesRead = respStream.Read(inData, 0, inData.Length); /判断下在是否成功 System.IO.FileInfo fi = new FileInfo(localFileName); if (fi.Length != len) localFileName = string.Empty; fi = null; catch finally if (rdr != null) rdr.Close(); if (wrtr != null) wrtr.Close(); return localFileName; 最后没有办法,我只好自己实现了一个基于HTTP协议下载的程序,相关代码如下:public string HttpDownload(string url) try url = url.ToLower().Replace(http:/, ); int offset = url.IndexOf(/); string Host=url.Substring(0,offset); string file = url.Substring(offset); IPHostEntry IpHost = Dns.GetHostEntry(Host); Socket Sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint point = new IPEndPoint(IpHost.AddressList0, 80); Sock.Connect(point); if (Sock.Connected) string strGet = GET + file + HTTP/1.0rn + Host: + Host + rn + Accept:*/*rn + User-Agent:GeneralDownloadApplicationrn + Connection:Keep-Alivernrn; Byte cmd = Encoding.Default.GetBytes(strGet.ToCharArray(); Sock.Send(cmd, cmd.Length, SocketFlags.None); string strInfo = ; for (int i = 0; i 0) Byte bytes = new Byte1024; int intSize = Sock.Receive(bytes, 1024, 0); strInfo += Encoding.Default.GetString(bytes, 0, intSize); if (strInfo.IndexOf(HTTP/1.1 200 OK) = 0) intSize = strInfo.IndexOf(rnrn); if (intSize 0) return strInfo.Substring(intSize + 4); Thread.Sleep(10); catch return ; 3、 GPRS通信程序,该部分和正常的Socket通信一般无二,所以相关代码略。4、 服务端信息上传代码。该部分代码实现比较简单,直接用WebClient类的UploadString可以上传到指定FTP服务器,代码如下:public static bool HttpUpLoad(string HostName,string ip,int port) WebClient client = new WebClient(); try client.UploadString(ftp:/yefan:1234/yefanqiu/ + HostName + .txt, ip + | + port.ToString() + | + DateTime.Now.ToString(yyyy-MM-dd hh:mm:ss); return true; catch(Exception ex) YFB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论