请教GPRS模块与Internet下主机的连接、数据传输过程
发布时间:2010-06-14 16:37:58 文章来源:www.iduyao.cn 采编人员:星星草
请问GPRS模块与Internet上主机的连接、数据传输过程
虽然按照GPRS模块的说明文档能够通过内嵌TCP/IP实现数据的传输,但是对GPRS模块和主机之间的连接关系了解得不是很多。有谁可以介绍一下GPRS模块和一台Internet主机之间的连接、数据传输的详细过程。
------解决方案--------------------
首先Internet主机需要做端口映射,及对应外网的IP的某个端口即为该Internet主机,打开服务器软件;
其次,GPRS模块在知道Internet主机的外网地址和映射端口号的情况下,建立网络连接.模块连接的IP及端口,网络会默认是和该Internet主机建立的连接.
再由PPP协议、TCP/IP协议等等,保证连接的建立和数据的发送和接受。
------解决方案--------------------
实际上GPRS DTU上实现的协议栈是TCP/IP Over PPP。我们在使用时必须要有一些相应的概念。因此在下面我们就与SARO-1010P使用相关的一些事项作一些简要的说明,如果您想详细了解这些协议,请参见相关书籍:
1. 每一次SARO-1010P拨ATD*99***1#(或ATD*99***1#)之后其实都在采用PPP协议和移动的接入设备(一般是移动公司的一台特殊的GGSN路由器)进行握手,当PPP协议握手成功后,SARO-1010P都会获得一个动态IP地址。一般来说,每一次SARO-1010P下线后(挂断连接或者直接断电后)在重新进行拨号和PPP握手后取得的动态IP地址都是不一样的。但是移动公司可以通过为客户开通特定的APN和发行特殊的SIM卡,使得用这张SIM卡获得的动态IP地址每一次都不变。也就是说可以做到SIM卡和IP地址绑定。
2. 我们在做测试时,应当注意到如下事实:在采用公网的Apn(“cmnet”)的条件下,如果我们用SARO-1010P主动向公网上的一个静态公网IP地址发起TCP连接,只要这个公网上的机器确实有侦听相应的端口,这样是可以连上的;但是相反地,如果是由公网上的静态IP向SARO-1010P动态获得的IP地址主动发起的TCP连接将不会成功。这个现象的原因是:实际上SARO-1010P获得的动态IP地址是移动的一个特殊的内部网段上的地址,这个特殊内部网段里的地址如果要和外部网(公网)的地址进行TCP通信,必须通过一个类似于TCP代理(或者NAT)的设备进行通信的转发。换句话说,这个动态地址对于网络上的其他机器来说是不可访问的。
3. 标准AT命令+CGDCONT的主要作用是指定Apn。Apn是Access Point Name(访问接入点)的缩写,移动通过开通特殊的Apn为行业客户提供Vpn(Virtual Private Net)服务。比如说,如果是要上公网(Internet),应当使用“cmnet”作为Apn。又如,某企业向移动公司申请了Vpn服务,移动公司为其开通了一个Apn为“hxsw.gd”,则我们就应当用这个Apn来设置Gprs模块,格式如下:
AT+CGDCONT=1,“IP”,“hxsw.gd”
4. 确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是SARO-1010P为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(SARO-1010P在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。
5. 使用TCP协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段:
1).连接建立阶段:
连接的建立又有主动连接和被动连接之分,一般来说客户机都是主动发起连接的,而服务器是被动接受连接的。
所谓的主动连接是指本方主动向远端发起连接请求, 而被动连接指的是本方侦听一个端口,等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。
在连接成功,切换到数据态后,我们可以通过OPEN命令帧控制SARO-1010P 进行主动连接。当然,连接时要指定对方的IP地址和端口号。至于被动连接,SARO-1010P也可以支持,目前的程序只支持侦听一个端口。对方主动连接(SARO-1010P被动连接)成功后将建立一条新的通信连接,SARO-1010P将把这个被动连接成功的事件通知给上位机。
2).数据收发阶段:
当一条连接建立之后,我们就可以在这条连接上进行数据收发了。
我们可以使用SEND命令帧控制SARO-1010P进行数据发送。当然,发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。
对于对方发送过来的数据,SARO-1010P首先将其存储在自身的数据缓冲区中,然后将数据已到达此事件通知给上位机,上位机读取到数据已到达事件后,应当及时使用RECV命令帧控制SARO-1010P将相应连接上的所有数据通过串口读出,当数据读出后,这些数据原先占用的数据缓冲区空间将会被释放。注意,由于SARO-1010P的数据缓冲区有限(总量仅有25K Bytes),所以,对于对方发来的数据,上位机一定要及时读出,否则数据越积越多,可能会导致数据缓冲区溢出,丢失数据。
3).挂断连接阶段:
当一条连接上的所有数据都已经收发完成了,不再需要这条连接时,就可以把连接给挂断了。
和连接建立阶段相类似,挂断也分为主动挂断和被动挂断。
我们可以使用RSET命令帧控制SARO-1010P进行连接的主动挂断。
如果连接被对方主动挂断,SARO-1010P将会把这个事件通知给上位机进行处理。
转引原文:http://www.gkong.com/co/xiamensangrong/learn_detail.asp?learn_id=619
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于3G模块上网速率的疑问
模块通过的是串口和主板连接,串口最高的波特率是115200bps,那市场上的上网卡是如何实现14Mbps的速率的?
...
-
如何window xp 或win7下的蓝牙编程
想编写一个window xp 或win7下的蓝牙小程序,却无从下手,网上找到的例子,都是在window mobie上的,...
-
有没集成wifi功能的单片机或处理器件芯片
有没集成wifi功能的单片机或处理器件芯片. 我想将该处理器做一个WIFI终端设备来用. 芯...
-
求 一种3G无线路由器,有两个SIM卡插槽,
有没有 一种3G无线路由器,有两个SIM卡插槽,同时支持联通和电信两种3G模式,同时有RJ45接口作为...
-
3G视频服务器
公司开发IPCAM,希望视频可以通过3G无线网络发送,让外访问。
已经开发了相关的板子,让联通的3G卡可以拔号上网,拔号很成...
-
GPRS模块和电脑通信
由于电脑是动态IP的,所以不知道要怎么下手!不可能每次都手动设置IP!
------解决方案--------------------
只...
-
SIM900发送AT+SAPBR=1,1返回错误!!!
用单片机给SIM900发送指令和结果返回如下,到第三条AT+SAPBR=1,1时,就返回+CME ERROR: operation n...
-
不同接口wifi的问题
wifi模块的的接口有很多比如SPI、SDIO、USB等,它们的传输数据的速率(M/S)是一样的吗?能达到多少?如果是要实时传输...
-
PC做服务端,GPRS模块做客户端,PC要配置什么才能与GPRS通信?
我们在做一个智能公交站牌,公交站牌上能显示某一站车的预计到达时间,现在...
-
【求教】华为3G模块EM770W,有哪位高人使用过或了解的吗?
EM770W无线通信模块支持WCDMA 3G
现在EM770W这个模块拿到手了,用串口连接,给...