0

一文读懂Socket通信原理

什么是Socket?Socket的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。Socket就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个Socket实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP地址和端口”,我就接通谁。实际上,Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。Socket起源于UNIX,在Unix一切皆文件的思想下,进...

阅读全文>>

0

基于netty框架的socket长连接负载均衡解决方案 oswl

前言 物联网如今是一个大的趋势,但是概念还比较新颖。大家对这一块的技术积累也比较匮乏,借此前段时间摩拜单车出现了大规模瘫痪的现象。我们今天来讨论一下物联网项目的开发方式。 关于tcp/ip 相关的知识点 tcp三次握手,四次挥手http://blog.csdn.net/whuslei/article/details/6667471tcp Client/server 最大连接数http://blog.csdn.net/huangjin0507/article/details/52399957close_wait问题处理方案http://www.cnblogs....

阅读全文>>

0

TCP/IP和Socket开发经验分享

当前与网络相关的业务主要是基于tcp/ip或http,熟悉j2ee的同学一定会对http场景下的开发比较了解。但是,精通tcp/ip以及如何构建一个直接基于tcp/ip层通讯的知识却不太多见。恰巧,最近一年来我参与了一些基于tcp/ip应用的开发工作。总算有所收获,今天在博客中做些分享,希望对有兴趣的同学有所帮助。比较常见的4层网络模型(图)如下:基于应用层的开发难度是相对比较低的,因为绝大部分与连接和数据传输、校验相关的事情已经交给(系统)来完成,使得开发人员只需要专注于业务即可。这种分层的技术结构是非常高级和有效的。基于应用层的开发虽然方便,但是当我们需要在功能上实现某些特殊需求的时候,就...

阅读全文>>

1

所有保持长连接的地方都要用到心跳包

心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。 网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓“心跳”就是定时发送一个自...

阅读全文>>