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. http协议之长连接与短连接服务器,长连接短连接

    HTTP 协议与 TCP/IP 协议的关系 HTTP 协议是应用层的协议,而 TCP 协议是传输层的协议,IP 协议是网络层的协议. IP 协议主要解决网络路由以及寻址等问题,而 TCP 协议主要解决 ...

  2. 转载的HTTP长连接短连接和无状态的理解

    HTTP长连接和短连接以及推送服务原理 HTTP长连接和短连接1 1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用 ...

  3. HTTP - 长连接 短连接 长轮询 短轮询 心跳机制

    错觉与突然的察觉 大多数人都知道HTTP1.0不支持长连接,知道HTTP1.1支持长连接. 这是业界的一个常识. 然而这样的描述导致了一些不做网络底层开发的开发者都下意识的认为HTTP1.1是一个可以 ...

  4. nginx 代理tcp长连接短连接配置

    nginx使用ngx_stream_core_module模块代理tcp长连接短连接,可以增强服务器的容灾能力 下面是一个配置信息,自己也方便记录一下

  5. UDP与TCP区别以及长、短连接

    长连接 也叫持久连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方(客户端OR服务端)主动断开连接,此过程称为一次完整的长连接.HTTP1. ...

  6. 04-长连接,短连接,连接池

    一. 短连接 短连接是指程序和数据库通信时需要建立连接,执行操作后,连接关闭.短连接简单来说就是每一次操作数据库,都要打 开和关闭数据库连接. 基本步骤是:连接→数据传输→关闭连接. 二. 长连接 长 ...

  7. HTTP长连接短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

  8. [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)

    通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流.这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的.就是想办法让这个框架更 ...

  9. TCP长连接,短连接

    1. TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接.client向server 发送消息,server回应client, ...

  10. http 长连接 短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

最新文章

  1. 五大开源游戏引擎介绍
  2. maven中添加servlet、jsp依赖
  3. Stateflow如何观察变量的变化
  4. 《现代操作系统》精读与思考笔记 第一章 引论
  5. 华为P50 Pro+高清渲染图曝光:居中单挖孔屏+后置徕卡五摄
  6. kindeditor在线html编辑器,kindeditor在线HTML编辑器
  7. 涉密文件检查工具_保密文件销毁咨询
  8. 【C++学习笔记】密码转盘锁解题,记录开锁步骤
  9. ATTiny85 Arduino开发环境搭建及使用
  10. 【刷题】BZOJ 1487 [HNOI2009]无归岛
  11. 深入浅出TCP三次握手 (多图详解)
  12. 超级表格第21行的秘密
  13. 『强烈推荐2个网站』这才是Win10官方原版正确下载姿势
  14. 接口自动化测试之接口测试基础
  15. 题目:给定一个数组并查找数组里边的元素(C实现),每日一题防止颓废~达咩~~
  16. 脑科学读物阅读笔记系列 - 拉马钱德兰《脑中魅影》- 2. 幻肢痛
  17. python数字和字符串可以运算吗_python数字和字符串对象
  18. 多个exe程序一起打包,按顺序安装
  19. Flutter Scaffold脚手架
  20. PostgreSQL教程:PostgreSQL 10入门

热门文章

  1. 【Java】认识NPE问题 - 空指针异常
  2. 商圈热点事件:极智嘉拟科创板上市、小鹅通D轮融资……
  3. Kingdee常见网络问题-rubberdam.cn
  4. 农业计算机应用论文,计算机应用论文农业中计算机应用科技模式
  5. 基于AI视觉技术构建柔性生产数字化车间
  6. 【华为云技术分享】云原生数据库三驾马车之TaurusDB
  7. 抖音怎么投放广告最有效?三点注意事项值得了解
  8. 2022便利蜂4.14算法笔试题
  9. XGBoost原理手推
  10. 区块链乱象!逐利,魔鬼与天使的共同目标