`
weiyinchao88
  • 浏览: 1183466 次
文章分类
社区版块
存档分类
最新评论

TCP/IP的多种连接情况

 
阅读更多

刚接触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,可以说连接任何方式的通信程序都不存在问题。

补充:

什么是“长连接”和“短连接”?

解释1

所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差,
所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接

解释2

长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。
而短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。

解释3

长连接和短连接这个概念好像只有移动的CMPP协议中提到了,其他的地方没有看到过。
通信方式
各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对 CMPP消息的发送。
现阶段,要求ISMG之间必须采用长连接的通信方式,建议SP与ISMG之间采用长连接的通信方式。

解释4

短连接:比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。
长连接:有些服务需要长时间连接到服务器,比如CMPP,一般需要自己做在线维持。

分享到:
评论

相关推荐

    TCPIP安全 TCP/IP是Internet实现通信的核心

    两种分层结构比较起来:TCP/IP力求简单高效,例如IP层并没有实现可靠的面向连接,而是把它交给了TCP层实现,保证了IP层的简练性。事实上有些服务并不需要可靠的面向连接服务,如在IP层上加上可靠性控制,对有些服务...

    tcp/ip详解

    TCP连接建立(三次握手)和拆除,其中介绍了很多一般书上没有出现的内容如半打开和半关闭;TCP数据交互和窗口机制;TCP超时与重传(可靠传输),并描述了多种实际算法;TCP的各种计时器;TCP的一些修改建议,并提出了T/TCP,详细...

    TCP/IP和网络编程之五子棋游戏

    现代五子棋日文称之为“连珠” ,英译为“Renju” ,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子” 、“五子连” 、“串珠” 、“五目” 、“五目碰” 、“五格”等多种称谓。 五子棋不仅...

    NetAssist网络调试助手,是Windows平台下开发的TCP/IP网络调试工具,集TCP/UDP服务端及客户端于一体,是网

    NetAssist网络调试助手,是Windows平台下开发的TCP/IP网络调试工具,集TCP/UDP服务端及客户端于一体,是网络应用开发及调试工作必备的专业工具之一,可以帮助网络应用设计、开发、测试人员检查所开发的网络应用软/...

    TCP/IP网络测试工具

    TCP IP 多种连接的网络测试工具,同时包括服务器,客户端: 要求环境:dotnet formework 3.5

    C++使用SOCKET实现TCP-IP协议的通讯最好的DEMO源码

    第一个程序结构负责服务器的启动与客户端连接的登记,首先建立TcpListener网络侦听类,建立的时候构造函数分别包括localaddr和port2个参数,localaddr指的是本地地址,也就是服务器的IP地址,有人会问为什么它自己...

    分析W5100在嵌入式系统中TCP/IP网络通信的应用

    提供多种总线(两种并行总线和SPI总线)接口方式,可以很方便地与各种单片机连接。  W5100器件的推出,大大简化了硬件电路设计,使单片机系统在没有操作系统的支持下,真正实现了单芯片接入Intern

    TCP/IP的以太网LCD电子标签系统设计

    解决同一控制系统中多种现场总线的集成问题,在一些工程中通常是利用某种标准技术开发能够连接其现场总线的接口。但各现场总线标准没有完全统一,需要开发大量的接口才能满足不同工控对象的需要。因此,我们提出了...

    W5500模块数据手册V1.3版

    W5500模块,实现全硬件TCP/IP协议栈,支持TCP,UDP,ICMP,IPv4,ARP,IGMP,PPPoE等多种协议,使用较为便捷。官方socket网络接口库及社区W5500库又对网络操作进行了封装,便于开发人员调用。W5500模块是标准SPI设备,博文...

    [详细完整版]路由器.txt

    如果互联的局域网采用了两种不同的协议,例如,一种是TCP/IP协议,另一种是SPX/IPX协议(即Netware的传输层/网络层协议), 由于这两种协议有许多不同之处,分布在互联网中的TCP/IP(或SPX/IPX)主机上,只能通过...

    嵌入式系统/ARM技术中的分析W5100在嵌入式系统中TCP/IP网络通信的应用

    W5100是WIZnet公司最新...提供多种总线(两种并行总线和SPI总线)接口方式,可以很方便地与各种单片机连接。  W5100器件的推出,大大简化了硬件电路设计,使单片机系统在没有操作系统的支持下,真正实现了单芯片接入In

    ESP8266 WiFi模块教程.pdf

    它集成了TCP/IP协议栈,支持多种通信模式,如STA(Station,客户端模式)、AP(Access Point,热点模式)以及STA+AP(客户端+热点模式)。通过ESP8266 WiFi模块,用户可以轻松地将设备连接到WiFi网络,实现远程控制...

    ftp4j-1.6-支持代理配置

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能。...ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。

    ftp4j-1.3.5

    ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 支持中文(linux下测试),速度没有测试过,反正自己用感觉还是比较...

    C2000应用说明书.pdf

    具有TCP Server,TCP Client、UDP、虚拟串口、点对点连接等五种操作模式; 用户基于网络的软件,不需要做任何修改就可以与C2000 E1S0通讯; 通过安装我们免费提供的虚拟串口软件,用户基于串口的软件不需要做任何...

    Cisco路由器配置语句全攻略

    虽然路由器可以支持多种协议(如TCP/IP、 IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据...

    通信与网络中的串口服务器(串口转网口TCP/IP)在UPS电源集中监控系统应用

    电源集中监控系统是对分布的工业、生活小区楼宇的开关电源、空调、油机、蓄电池、高低压配电等多种设备的各种参数进行实时监测其运行参数,诊断和处理故障,记录和分析相关数据,从而实现少人或无人值守的目的,并对...

    基于OPC的焦化厂备煤系统异构网络化控制系统设计

    该系统通过基于工业以太网的TCP/IP体系连接所有子系统,并利用OPC技术为异构数据源提供统一数据接口,使数据管理层能够获取各种数据,解决了异构网络中数据信息转换、集成及存储问题,满足了企业生产过程中信息互操作...

    串口wifi模块使用手册和驱动协议

    串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接入...

    串口wifi-03模块例程代码

    03串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接...

Global site tag (gtag.js) - Google Analytics