长连接和短连接

简介: 长连接和短连接 TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。 通信方式 主要有以下三大类: (一)SERVER/CLIENT方式 1.一个Client方连接一个Server方,或称点对点(peer to peer): 2.多个Client方连接一个Server方,这也是通常的并发服务器方式。

长连接短连接

TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。

通信方式 主要有以下三大类:

()SERVER/CLIENT方式

1.一个Client方连接一个Server方,或称点对点(peer to peer)

2.多个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

原文:

http://www.cnblogs.com/liuyong/archive/2011/07/01/2095487.html

http://wenku.baidu.com/view/c45a1926482fb4daa58d4b00.html

目录
相关文章
|
Android开发
Android5.0 Recovery源代码分析与定制(一)
Android5.0 Recovery源代码分析与定制(一)
282 0
|
数据可视化 API vr&ar
探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用
探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用
2188 3
|
4月前
|
存储 弹性计算 安全
阿里云服务器38元、99元、199元配置、适用场景区别及选择参考
目前,阿里云有多款特价云服务器产品,轻量云服务器2核2G200M峰值带宽38元一年,经济型e实例云服务器2核2G3M带宽99元1年、4核16G10M云服务器70元1个月、210元3个月,8核32G10M带宽160元1个月、480元3个月,通用算力型u1实例2核4G5M带宽199元一年、4核8G云服务器955元一年。本文将详细介绍阿里云的三款特价云服务器产品:38元的轻量应用服务器、99元的云服务器ECS经济型e实例,以及199元的云服务器ECS u1实例,帮助用户更好地了解这些产品的规格、配置、适用场景及购买资格和注意事项。
|
数据可视化 PyTorch Serverless
Python 性能分析的几个方法,找到你代码中的那个她
我们在编写了一个脚本在笔记本上处理一些数据,然后去喝杯咖啡或者上了个厕所,15分钟后回来时发现进度才完成不到10%。 我们的脑袋里面就会发问:为什么这么慢?究竟是在哪个部分是慢的?是读取数据、处理数据还是保存数据?如何让它变快?它真的很慢吗? 有了这个疑问我们尝试去解决这个问题,下面我们介绍几个 python 性能分析的工具。
|
安全 Java 应用服务中间件
当遇到非法 URL 参数时,如何保障网页正常打开
访问如`http://example.com?a@b=1`的链接出现400 Bad Request错误,这是因为Tomcat不允许请求目标中含有非法字符。Spring Boot 2可通过配置`server.tomcat.relaxed-query-chars`来允许特殊字符,但这样做可能引入安全风险。因此,建议在Nginx层使用`rewrite_by_lua_block`和`ngx.redirect`进行重定向,将非法字符替换为合法形式,如`http://example.com?ab=1`,同时记录日志以监控。此方案能避免直接修改后端代码,提高安全性。
562 0
|
人工智能 自然语言处理 安全
ChatGPT-5 最快将于 6 月发布
OpenAI计划推出ChatGPT-5,预计6月发布,企业客户已提前体验其增强的性能与定制化功能。模型将经过密集训练和严格安全测试,提升语言理解和交互的自然度。GPT-5将影响多个行业,带来商业机遇,同时引发关于伦理和安全的讨论。其在教育和医疗领域的应用前景广阔,但用户仍需注意信息验证。
982 0
ChatGPT-5 最快将于 6 月发布
STM32的HAL库开发系列 - CAN通信筛选器
STM32的HAL库开发系列 - CAN通信筛选器
660 0
|
XML Java 数据库连接
若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper【已解决】
若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper【已解决】
1601 0
若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper【已解决】
|
NoSQL 数据安全/隐私保护