公司新项目中涉及到Socket通信有关的东西,虽然之前接触到一点,不过好长时间不用基本上忘个七七八八了,网上查了查资料,根据项目中的需求自己做了个小Demo,欢迎大家指正.
1.需求:
1.1:客户端测量完毕后,将测量数据以Socket的方式上传的服务端;
1.2:客户端每过1秒中向服务端发送一次心跳,服务端记录心跳时间并且每两秒钟判断一次心跳间隔,如果上一次心跳时间与现在时间间隔超过两秒钟视为连接异常,否则为连接正常.
2.基本概念
2.1:TCP IP协议:在早期计算机网络中,各大厂商都有着自己的一套网络协议,互不兼容,这就导致说中文的只能跟说中文的交流而不能跟说英文的交流,这样的现象很不友好,为了让不同种类的所有计算机都能毫无障碍的交流,就必须要使用一套统一的标准,所以internet应运而生,在Internet的各种协议中,最重要的两个协议就是TCP和IP协议.
2.2:在数以万计的计算机中,如果你想和某台计算机A通信,那么就必须知道A这台计算机在互联网中的ip地址(ip地址是每个计算机在网络中的唯一标识),而ip协议就是负责把你要发送的数据分割成n段打包然后从你的计算机发送到A计算机,但是在运输的过程中ip协议不会保证能把数据完整的送到A计算机,当然也不能保证数据会按照切割的先后顺序到达A计算机.
2.3:TCP协议是建立在IP协议之上的协议,TCP协议会在两台计算机之间建立可靠的连接,并且会保证ip协议切割打包的ip包完整顺序的到达A计算机,即使在传输的过程中丢包了,TCP协议也会重新发送ip包,保证数据的完整性.TCP协议会把传输的数据流分成适当长度的报文段,一个单独的报文段除了包含要传输的数据流外还包含源计算机ip地址、端口和目标计算机ip地址、端口.
2.4:端口:在给A计算机发消息的时候,只知道A的IP地址是不够的,还需要知道给A计算机的哪个程序发消息,例如我是给A计算机的微信发送的数据,那么我就需要知道微信这个网络程序向计算机申请的端口号,这样两个计算机中的两个网络程序才能互相建立连接.
2.5:TCP/IP的四层协议:
2.5.1网络接口层(数据链路层)是物理传输通道,对于网络层下发的ip数据包通过网络选择合适的路径转发;对于从网络上接收到的物理帧,抽出ip数据包并交给网络层.
2.5.2网络层对于网络接口层上传的ip数据包进行数据检验,检验此数据是否到达目的地址,是则去除包头将剩余数据上传到传输层,否则选择合适的路径继续转发;对于传输层下发的分组数据添加包头,封装成ip数据包交给网络接口层.
ARP:address resolution protocol