刚接触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 端口号(如567。),此种方式常用于点对点通讯。
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,可以说连接任何方式的通信程序都不存在问题。
分享到:
相关推荐
本文为原创,从实用出发,描述了modbusTCP/IP即 modbusETHERNET通信详细说明使用过程和概念,通俗易懂,同时讨论了modbusTCP/IP通信中,智能表作TCPserver和作TCPclient两种情况。modbus中常用的软件modscan32和...
在IT行业中,网络通信是至关重要的一个领域,TCP/IP(Transmission Control Protocol/Internet Protocol)协议栈则是互联网通信的基础。本文将深入探讨使用C#语言实现TCP/IP通信的实例,帮助你理解并掌握如何构建...
学习这个示例,开发者可以了解TCP/IP通信的基本流程,包括如何建立连接、发送和接收数据。这对于开发基于网络的应用,如聊天程序、文件传输、在线游戏等都是至关重要的。同时,这也有助于理解和使用其他高级网络技术...
本项目“C#编写的TCP/IP通信程序”就是基于C#的Socket编程实现的服务器和客户端示例,旨在帮助初学者理解和掌握TCP/IP通信的基本原理和编程技巧。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输...
C#作为一种强大的编程语言,提供了丰富的类库来支持TCP/IP通信。本篇将详细探讨C#中的TCP/IP通信程序代码,包括基本概念、主要涉及的对象以及如何构建客户端和服务器。 首先,TCP(Transmission Control Protocol)...
在本文中,我们将深入探讨如何实现ARM Linux与Windows 10上位机之间的TCP/IP网络通信。这个主题涉及多个技术领域,包括操作系统间的通信、网络编程以及特定的编程语言和库。以下是一份详细的概述: 1. **TCP/IP协议...
C#作为一种功能强大的编程语言,提供了丰富的库和API来支持TCP/IP通信。本项目名为"C# 开发的TCP/IP通信测试程序",旨在帮助开发者理解和实现基于C#的TCP/IP通信。 TCP(传输控制协议)是一种面向连接的、可靠的、...
《TCP/IP通信程序详解》 TCP/IP通信协议是互联网上最基础、最重要的通信协议之一,它定义了数据在网络中传输的规则和格式。本程序示例展示了两台计算机如何利用TCP/IP进行点对点的通信,这对于理解网络编程原理以及...
根据提供的文件信息,本文将详细解释TCP/IP通信的相关知识点,特别是与标题、描述及部分代码内容相关的概念。 ### TCP/IP通信概述 TCP/IP(Transmission Control Protocol/Internet Protocol)是Internet最基本的...
TCP/IP协议在网络中的应用非常广泛,它是供已连接因特网的计算机进行通信的通信协议。下面是TCP/IP协议的详细解释: 1. TCP/IP协议的定义 TCP/IP协议是供已连接因特网的计算机进行通信的通信协议。TCP/IP指传输...
"创建用于开放式TCP/IP通信的连接数据的向导"通常是一个软件工具,旨在简化开发者建立网络连接的过程。 首先,让我们深入理解TCP/IP协议族。TCP是一种面向连接的协议,它确保数据包按顺序到达,并且在传输过程中...
在本文中,我们将深入探讨如何使用LabVIEW进行TCP/IP网络通信。LabVIEW,全称Laboratory Virtual Instrument Engineering Workbench,是一种图形化编程环境,广泛应用于科学、工程和工业领域。利用其强大的数据处理...
对于"通信测试程序"标签,这通常意味着这些源代码被设计用来验证TCP/IP通信功能的正确性,例如检查连接是否成功,数据传输是否准确,以及断开连接是否无误。这种测试对于开发网络应用程序至关重要,因为网络环境的...
总之,Delphi的ServerSocket和ClientSocket组件为开发者提供了便捷的TCP/IP通信手段,使得创建网络应用程序变得容易。通过熟练掌握这些组件及其事件,你可以构建功能丰富的通信应用,无论是简单的聊天室还是复杂的...
TCP/IP Architecture, Design and Implementation in Linux 1/5 For All: [Part 1/5] http://download.csdn.net/source/1345609 [Part 2/5] http://download.csdn.net/source/1345649 [Part 3/5] ...
计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都...
在IT行业中,TCP/IP通信是网络程序开发的基础,无论是在客户端-服务器应用、分布式系统还是物联网设备间的数据交互,都离不开TCP/IP协议栈的支持。本文将深入探讨标题为"TCP/IP通信(传输)例程"的相关知识点,以及...
在本文中,我们将深入探讨如何使用三菱FX5UJ PLC(可编程逻辑控制器)与艾莫迅远程模块通过TCP/IP协议进行通信,并实现多种功能。首先,我们要理解TCP/IP通讯的基础,然后逐步解析源码软件的实现细节。 TCP/IP...
android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信