gprs开发系列文章之实战篇

gprs开发系列文章之实战篇

ID:22370672

大小:62.00 KB

页数:8页

时间:2018-10-28

gprs开发系列文章之实战篇_第1页
gprs开发系列文章之实战篇_第2页
gprs开发系列文章之实战篇_第3页
gprs开发系列文章之实战篇_第4页
gprs开发系列文章之实战篇_第5页
资源描述:

《gprs开发系列文章之实战篇》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、GPRS开发系列文章之实战篇  本文示例源代码或素材下载  一、前言  在前篇《GPRS开发系列文章之进阶篇》里,我主要详细讲解了客户端进行GPRS连接的常用API,并对GPRSdemo测试程序中的连接类ConnManager中的一些重要函数做了说明,最后稍微提及了下服务器端要用到的一些类库。今天,在这篇实战篇中,我将在理解前两篇的基础上,结合客户端与服务器端,向大家介绍这篇GPRS开发之实战篇,向大家演示如何利用GPRS开发一个客户端与服务器端互相通信的程序,主要介绍SOCKET编程的原理和SOCKET应用API,并

2、在最后提供本实战篇的源代码下载。最后还是那句老话,欢迎指点,共同提高!  二、实战系列篇详解  1.      开发环境  a)      客户端:EVC4;  b)      服务器端:VS2005(C#);  2.      运行环境  a)      客户端:ppc2003(obile或以上版本;  b)      服务器端:P协议和网络层的核心协议IP协议。在TCP/IP协议簇中的传输层中,提供了进程间的通信的TCP和UDP协议,这两个协议分别提供了了可靠的面向连接的传输服务和简单高效的无连接传输服务,我们最需

3、要了解的就是传输层中的这两个协议。   IP因特网的IP协议提供了一种整个互联网中通用的地址格式,并在同一管理下进行IP地址的分配并保证其唯一性,以确保每台因特网主机(路由器)对应一个IP地址。  端口:网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocolport,简称端口)的概念,用于

4、标识通信的进程。  端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之,如我们通过指定端口读取GPS信息等。  类似于文件描述符,每个端口都拥有一个叫端口号(portnumber)的整数型标识符,用于区别不同端口。由于TCP/IP

5、传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。因此当我们通过指定的IP地址和端口号就可以找到唯一标志我们的进程了。  在了解了上述基础知识后,我们可以简单做个回顾,总结下整个连接的过程。本文介绍的客户端与服务器端通信是典型的C/S模式,客户端在请求服务器端提供特定服务后,服务器端接收请求并提供相应服务。在TCP/IP网络应用中,C/S模式中服务器端是采取主动的方式,首先启动,并根据请求提供相应服务。  服务器

6、端:  1.打开一通信通道并告知本地主机,它愿意在某一公认地址上接收客户请求;  2.等待客户请求到达该端口;  3.接收到服务请求,处理该请求并发送应答信号  4.返回第二步,等待另一客户请求。  5.关闭服务器  客户端:  1.打开一通信通道,并连接到服务器所在主机的特定端口;  2.向服务器发服务请求报文,等待并接收应答;继续提出请求......  3.请求结束后关闭通信通道并终止。  客户端主界面如图所示:123下一页——感谢阅读这篇文章,..,  【代码部分】  客户端主要功能为建立服务器的连接,和服务器互

7、相通信(发送数据和接收数据),其中用到的关键的核心类为CConnectionManager类和CTCPClient_CE类,而服务器端主要负责侦听同时也发送数据给客户端,用到的核心类为ConnectionManager,客户端和服务器利用socket通信步骤如下:  第一步:实例化套接字。  用emory(ansiRemoteHost,255);    ultiByte(CP_ACP,,IPPROTO_TCP);   if (m_socket == INVALID_SOCKET)   {       return FA

8、LSE;   }   //此时采用同步连接方式,connect直接返回成功或是失败   err = connect(m_socket,(struct sockaddr *)addr,sizeof(addr));   if (err == SOCKET_ERROR)    {       return FALSE;   }   //

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。