刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单。其实不然,TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。
一、通信方式
主要有以下三大类:
(一)SERVER/CLIENT方式
1.一个Client方连接一个Server方,或称点对点(peer to peer):
2.多个Client方连接一个Server方,这也是通常的并发服务器方式。
3.一个Client方连接多个Server方,这种方式很少见,主要用于一个客户向多个服务器发送请求情况。
(二)连接方式
1.长连接
Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,可以用下面命令查看连接是否建立:
netstat –f inet|grep 端口号(如5678)。
此种方式常用于点对点通讯。
2.短连接
Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.
(三)发送接收方式
1.异步
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:
(1)异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接收
(2)异步单工:接收和发送是用两个不同的程序来完成。
2.同步
报文发送和接收是同步进行,既报文发送后等待接收返回报文。同步方式一般需要考虑超时问题,即报文发上去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。
实际通信方式是这三类通信方式的组合。比如一般书上提供的TCP/IP范例程序大都是同步短连接的SERVER/CLIENT程序。有的组合是基本不用的,比较常用的有价值的组合是以下几种:
同步短连接Server/Client
同步长连接Server/Client
异步短连接Server/Client
异步长连接双工Server/Client
异步长连接单工Server/Client
其中异步长连接双工是最为复杂的一种通信方式,有时候经常会出现在不同银行或不同城市之间的两套系统之间的通信。比如金卡工程。由于这几种通信方式比较固定,所以可以预先编制这几种通信方式的模板程序。
二.报文格式
通信报文格式多样性更多,相应地就必须设计对应的读写报文的接收和发送报文函数。
(一)阻塞与非阻塞方式
1.非阻塞方式
读函数不停地进行读动作,如果没有报文接收到,等待一段时间后超时返回,这种情况一般需要指定超时时间。
2.阻塞方式
如果没有报文接收到,则读函数一直处于等待状态,直到有报文到达。
(二)循环读写方式
1.一次直接读写报文
在一次接收或发送报文动作中一次性不加分别地全部读取或全部发送报文字节。
2.不指定长度循环读写
这一般发生在短连接进程中,受网络路由等限制,一次较长的报文可能在网络传输过程中被分解成了好几个包。一次读取可能不能全部读完一次报文,这就需要循环读报文,直到读完为止。
3.带长度报文头循环读写
这种情况一般是在长连接进程中,由于在长连接中没有条件能够判断循环读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读报文.实际情况中,报头的码制格式还经常不一样,如果是非ASCII码的报文头,还必须转换成ASCII,常见的报文头码制有:
(1)n个字节的ASCII码
(2)n个字节的BCD码
(3)n个字节的网络整型码
以上是几种比较典型的读写报文方式,可以与通信方式模板一起预先提供一些典型的API读写函数。当然在实际问题中,可能还必须编写与对方报文格式配套的读写API.
在实际情况中,往往需要把我们自己的系统与别人的系统进行连接,有了以上模板与API,可以说连接任何方式的通信程序都不存在问题。
分享到:
相关推荐
### TCP/IP通信程序设计的丰富多样性 #### 一、通信方式 **1. SERVER/CLIENT方式** - **点对点(Peer-to-Peer)**: 在这种模式下,客户端(Client)与服务器(Server)之间建立一对一的连接。这种连接通常用于需要高效...
在TCP/IP通信程序设计中,长连接和短连接是两种主要的连接方式,它们各自有其特点和适用场景。理解这两种连接方式对于开发者来说至关重要,因为它们直接影响到系统的效率、资源管理和安全性。 **长连接**是指客户端...
TCP/IP协议族采用分层设计,每一层专注于特定的功能,确保了网络通信的灵活性和效率。这一架构通常被分为四层: 1. **链路层**:也称为数据链路层或网络接口层,涉及硬件设备与操作系统之间的交互,处理物理连接...
2. **与物理网络硬件无关**:TCP/IP设计时考虑到了兼容性问题,使得它可以适应不同类型的物理网络环境,如以太网、令牌环网、X.25网络等。 3. **通用的寻址方案**:TCP/IP支持全球范围内唯一的设备寻址方案,确保每...
- **分层结构**:TCP/IP 协议的分层设计使得它可以灵活地适应多样的网络环境和应用场景。 - **可靠性和性能**:TCP 协议提供了高可靠的数据传输服务,而 UDP 协议执行速度更快,适用于实时性要求高的应用场景。 - **...
**CDMA无线通信技术概述** CDMA(Code Division Multiple Access),码分多址,是无线通信领域的一种先进技术,与传统的...随着无线通信技术的不断发展,CDMA与TCP/IP的结合将继续推动无线网络的创新和应用的多样化。
在这个Java软件项目中,我们聚焦于如何在Java环境中实现TCP/IP通信,并进行课程设计实践。下面将详细介绍TCP/IP协议、Java中的TCP编程以及项目实施的关键知识点。 TCP/IP协议栈包含四层模型:应用层、传输层、网络...
通过这三卷书的学习,读者可以全面掌握TCP/IP协议族的核心概念,了解从物理链路到应用层的每一层协议的工作方式,从而更好地设计、实现和维护网络应用程序。无论是网络初学者还是资深专业人士,都能从中受益匪浅,...
TCP/IP设计时考虑到了物理网络的多样性,这意味着无论底层物理网络采用何种技术或介质(如以太网、光纤、无线等),IP协议都能够提供一致的服务。这种特性确保了TCP/IP可以在多种环境中无缝运行。 ##### 2.7 互用性...
TCP/IP协议族作为互联网的核心技术之一,使得来自不同制造商的各种类型的计算机能够通过一套标准化的规则进行通信。这一体系不仅支持了多样化的计算环境,而且其影响力已经远远超越了最初的预期。 #### 1.1 引言 ...
泛在IP协议体系是针对当前TCP/IP协议栈在面对新兴业务需求时的局限性而提出的创新概念。TCP/IP协议自20世纪80年代以来,虽然经历了IPv6、IPSec等改进,但在处理多样化的、专业化的业务需求时仍然存在固有缺陷。随着...
总的来说,协议软件接口和套接字在TCP/IP通信中起着至关重要的作用,它们为应用程序提供了一种标准方式来访问网络服务,实现了跨平台的通信能力。通过理解和掌握这些概念,开发者能够构建出能够有效利用网络资源的...
TCP/IP(Transmission Control Protocol/Internet Protocol)是一组用于连接网络的应用程序的协议,它定义了数据在网络中的传输方式。在本项目中,TCP/IP协议被用来实现客户端与服务器之间的通信,确保消息能够准确...
5. **网络编程**:移动通信程序设计离不开网络通信,包括HTTP、TCP/IP、WebSocket等协议的使用,以及JSON、XML等数据交换格式。书中可能详细讲解了如何在.NET环境中实现这些网络功能。 6. **实时通信(RTC)**:在...
在本主题中,“网络与通信程序设计-围棋”主要探讨的是如何利用计算机编程技术实现网络间的围棋游戏。围棋是一种极具策略性的两人棋类游戏,而将它与网络通信结合,意味着我们可以开发一个允许远程玩家通过互联网...
### 网络程序设计与网络软件体系结构 #### 计算机网络及其体系结构 计算机网络是指通过通信技术连接起来的多个具有独立处理能力的计算机系统,它们能够按照网络协议进行数据通信,并且实现资源(如硬件、软件、...
三、TCP/IP通信协议 TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上最基础的通信协议,它定义了数据在网络中的传输方式。在plcqtlib-1.2中,TCP/IP协议被用来建立上位机与PLC之间的连接。TCP...