一些常见术语

编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来寻址网络中的主机。我们知道网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。

短连接:

连接->传输数据->关闭连接
   HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

长连接:

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

什么时候用长连接,短连接?

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,处理时直接发送数据包就OK了,不用建立TCP连接。

例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

总之,长连接和短连接的选择要视情况而定。

最新文章

  1. 存在即合理,重复轮子orm java版本
  2. JDBC 工具类
  3. Android中动态更新ListView(转)
  4. css2----实现三角形和带角框
  5. How to install DIG dns tool on windows 7
  6. Linq/EF/lambda Group by/Order by 多个字段详细用法
  7. protocol buffer使用简介
  8. Linux内核源代码
  9. Python之IO模型
  10. 使用 Moq 测试.NET Core 应用 -- Mock 方法
  11. elasticsearch elk最全java api 搜索 聚合、嵌套查询
  12. java后端实习,从最简单的crud做起
  13. Java学习之String
  14. C#7特性
  15. 通过父类定位到子类 先将父类当作一个dom
  16. How to Install Xcode, Homebrew, Git, RVM, Ruby & Rails on Snow Leopard, Lion, Mountain Lion, and Mavericks
  17. 在linux上使用tomcat服务器图片验证码不显示问题
  18. 构建docker私有库
  19. Long.parseLong(String s) 其中s必须是数字形式的字符串,才能运用该函数转化为长整型。
  20. 以K个为一组反转单链表,最后不足K个节点的部分也反转

热门文章

  1. 「MoreThanJava」Day 5:面向对象进阶——继承详解
  2. OGG复制进程延迟高,优化方法一(使用索引)
  3. java BigInteger与BigDecimal
  4. Jdk1.8下的HashMap源码分析
  5. 谈谈 Qt4 中文乱码的解决
  6. Golang 简单爬虫实现,爬取小说
  7. 28个漂亮的React.js后台管理模板
  8. web主题适配方案指北
  9. Scala中的Map集合
  10. java引用传递还是值传递?