使用GPRS的cmwap接入点实现网络通讯1-----建立连接
关于无线接入方式的比较请见http://www.cnblogs.com/yoyolion/archive/2007/05/26/760807.html
 
cmwap作为费用低廉的无线上网方式,具有很大的应用价值。本文讨论了使用GPRS的cmwap接入点实现网络通讯,完成自定义数据的收发。
 
环境与平台:
服务器拥有一个公网ip,设为100.200.300.400 ,端口1000(为尽量简化,不使用域名,应该没有区别)
测试平台:服务器windows 2000 server,客户端pocket pc 2003 sencond edition(windows ce.net 4.2),软件以vc++2005开发(mfc8.0)
 
使用Pocket IE请求访问http:// 100.200.300.400:1000时,服务器端收到的数据如下

GET / HTTP/1.1
Host: 100.200.300.400: 1000
Accept: */*, text/x-vcard, text/x-vcalendar, image/gif, image/vnd.wap.wbmp
Accept-Language: zh-cn
UA-OS: Windows CE (Pocket PC) - Version 4.21
UA-color: color16
UA-pixels: 240x320
UA-CPU: Intel(R) PXA272
UA-Voice: TRUE
UA-Language: JavaScript
Accept-Encoding: gzip, deflate
Content-length: 0
Via: WTP/1.1 BJBJ-P-GW06-WAP.bj.monternet.com (Nokia WAP Gateway 4.0/CD3/4.1.79)
X-Forwarded-For: 10.12.239.87
X-Source-ID: GGSN
X-Nokia-CONNECTION_MODE: TCP
X-Up-Bearer-Type: GPRS
X-Nokia-gateway-id: NWG/4.1/Build04
Connection: close

可以看到它是普通的HTTP协议请求Request。
 
以下是客户端向100.200.300.400:1000发送一个请求的代码(为求清晰,省略了错误处理)

SOCKET m_socket;
socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//TCP套接字

struct sockaddr_in m_SeverAddr;//服务器地址
m_SeverAddr.sin_family = AF_INET;
m_SeverAddr.sin_addr.s_addr=inet_addr(“10.0.0.172”);//cmwap代理服务器ip
m_SeverAddr.sin_port = htons(80);//端口
 
connect(m_socket, (sockaddr *)&m_SeverAddr, sizeof(m_SeverAddr));
 
char request[100];
//下面是HTTP请求,注意一定是以空行结束(\r\n\r\n),具体参考HTTP协议
sprintf(request, "%s", "GET http://100.200.300.400:1000 HTTP/1.1\r\n\r\n");
 
send(m_socket, request, len, 0);//发送请求

connect是和cmwap代理服务器建立连接,再通过代理服务器完成与服务器的通信,成功执行send后(GET http://100.200.300.400:1000 HTTP/1.1),服务器很快就收到了请求包,如下:

GET / HTTP/1.1
Host: 100.200.300.400:1000
Content-length: 0
Via: WTP/1.1 BJBJ-P-GW13-WAP.bj.monternet.com (Nokia WAP Gateway 4.0/CD3/4.1.79)
X-Forwarded-For: 10.12.104.128
X-Source-ID: GGSN
X-Nokia-CONNECTION_MODE: TCP
X-Up-Bearer-Type: GPRS
X-Nokia-gateway-id: NWG/4.1/Build04
accept: */*
Connection: close

可以看到cmwap代理服务器为请求GET http://100.200.300.400:1000 HTTP/1.1加上了一些头信息,主要是网关地址BJBJ-P-GW13-WAP.bj.monternet.com,这个应该是称动服务器的URL。
 
如果是在重置或切换网络后第一次使用GPRS,可能会收到cmwap代理服务器发出的提示:

HTTP/1.1 200 OK, Success
Content-length: 725
Content-Type: text/vnd.wap.wml;charset=UTF-8
Date: Sat, 26 May 2007 02:40:06 GMT
Pragma: no-cache
Server: WebLogic Server 8.1 SP3 Tue Jun 29 23:11:19 PDT 2004 404973 with CRs:
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
 
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml><head><meta http-equiv="Cache-Control" content="max-age=0" forua="true" /><meta http-equiv="Cache-Control" content="no-cache" forua="true" /><meta http-equiv="Cache-Control" content="must-revalidate" forua="true" /></head><card title=""><p>中国移动通信提醒您:<br/>您正在使用手机上网业务,若继续浏览网页,会产生GPRS通信费,具体资费标准请垂询10086热线或访问www.sh.chinamobile.com。对包月客户仍按套餐资费标准收费。<br/>=继续访问请点击=<br/><a href='100.200.300.400:1000/?t=06158'>100.200.300.400:1000</a></p></card></wml>

我使用的是上海移动的神州行cmwap包月卡,这个提示信息是上海移动提醒客户端确认是否要进行internet访问的,可能是为了避免客户无意中使用GPRS而导致产生流量费用。该提示仅在重置或切换网络后第一次使用GPRS出现,后面再连接等不会出现。这个提示应该是和具体的网络提供商有关,使用其它省的包月卡可能没有这个提示。

具体处理时可以先判断一下是否有该提示,如果有,再次调用send(m_socket, request, len, 0)发送请求即可。

这样,通过connet到cmwap代理服务器,再发出一条Request,就实现了建立与目标服务器100.200.300.400:1000的连接,当然这种连接是间接的。

转载于:https://www.cnblogs.com/yoyolion/archive/2007/05/26/760866.html

使用GPRS的cmwap接入点实现网络通讯1-----建立连接相关推荐

  1. 计算机有网络为何显示未连接网络,明明插了网线,电脑网络为什么显示未连接?...

    断网总是有原因的,而断网时间却是毫无章法,上一秒还能上网,下一秒就提示网络"无连接". 这时候我们可以怎么检查网络? 1.首先,检查电脑右下角的网络图标是否显示"×&qu ...

  2. 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。...

    5G时代,跟IMSI-CATCHER SAY GOODBYE from:https://unicorn.360.com/blog/2018/04/18/GoodBye_5G_IMSI-Catcher/ ...

  3. 玩转华为数据中心交换机系列 | 配置M-LAG双归接入普通以太网络示例

    素材来源:华为数据中心交换机配置指南 一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:玩转华为数据中心交换机系列 | 汇总_COCOgsta的博客-CSDN博客 组网需求 如 ...

  4. 低轨卫星智能多接入边缘计算网络:需求、架构、机遇与挑战

    [摘  要]传统低轨卫星通信系统受限于星上板载能力和在轨计算能力约束,在适配未来天地一体融合网络架构中存在资源受限.运行孤立.响应迟滞等问题.为实现低轨卫星与地面网络的充分融合和协调发展,并适应新一代 ...

  5. linux透明防火墙接入fte 300 网络的问题

    linux防火墙接入fte 300网络,在非网关模式下,造成网络上的两台霍尼服务器无法相互发现,一拿掉 防火墙,5分钟交换机更新mac之后,两台机器正常发现,起初通过修改ipv6,或者不启动防火墙,单 ...

  6. 网络编程2_网络通讯协议, socket(tcp, udp)

    一. 网络通讯协议     互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准     互联网协议按照功能的不同分为osi七层或tcp/ip五层    ...

  7. day26 网络通讯的整个流程

    一.网络通信原理 1.  互联网的本质就是一系列的网络协议 2.  互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 各层的功能简述:[1]物理层:主要定义物理设备标准,如网线 ...

  8. Netpas:不一样的SD-WAN+ 保障网络通讯品质

    作为互联网社会中的一员,很多人肯定面临过这样的困扰:在视频网站追某一部剧时遭遇卡顿.和好友视频通话时图像不流畅.登陆公司OA时加载太慢--有时越着急却因为网络体验差耗着自己的性子,这时候又无可奈何.网 ...

  9. 关于如何修复移动热点无网络(无互联网连接)的问题

    背景 本文只是针对问题之--无互联网连接做分析. 首先,我们要明白,开启移动热点的前提是,电脑本身已经接入互联网,并且可以上网,连接的WIFI也好,有线也罢,开启移动热点的原理就是把你电脑自身连接的网 ...

最新文章

  1. flink二阶提交(没有搞完)
  2. 面试嵌入式开发工程师问的问题记录一下
  3. 打开与关闭Linux防火墙
  4. 微信小程序开发:学习笔记[5]——JavaScript脚本
  5. MS08067安全培训讲师(高薪、专兼职)
  6. mysql分表中间件对比_分库分表数据库中间件对比
  7. 微众银行·We研究2021年最新大调研报告“健康险专题” : 用户保险消费的三个改变
  8. GPS同步时钟(NTP时间服务器)网口物理隔离的好处
  9. 机器学习算法在退行性颈椎和腰椎疾病中的应用:一项系统综述
  10. 使用Python的PyPD创建PDF文档
  11. UVA 1637 - Double Patience(概率DP)
  12. MyEclipse全局搜索
  13. 计算机pe启动蓝屏怎么办,U盘重装系统进入PE蓝屏怎么办
  14. html中tabindex属性是啥意思
  15. 基于电力大数据的空气污染预测
  16. 代码的“门面”——模式系列谈之Facade模式
  17. Raft和Paxos简易漫画理解
  18. 什么叫封装?封装有什么作用?
  19. Wi-Fi Mesh网络技术
  20. Java算法:牛客网小米笔试真题算法Java版1-40题

热门文章

  1. 3-7 安全技术:数字证书(网络身份证)
  2. 回归分析(三)—— 多元线性回归
  3. CATIA知识工程模板 用户特征视频教程
  4. 计算机3十2院校排名,杭州3十2学校排名
  5. 俄制基因重塑版WINPE 8.1
  6. html5画布星空,HTML5 Canvas星空|星域背景图生成器
  7. python实战项目网站_python实战项目,搜索自己网站的关键词,使用代理并且模拟点击...
  8. [手机分享]黑莓手机9系列分享之——黑莓9500
  9. 不同城市空气质量实时监测api接口分享
  10. Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树