距离上次发帖也有一段时间了,先来介绍一下SOCKET吧 。伟大的百度百科有出现了。
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Socket连接过程
根据连接启动的方式以及本地
套接字要连接的目标,
套接字之间的连接过程可以分为三个步骤:
服务器监听,
客户端请求,连接确认。
(1)
服务器监听:是
服务器端
套接字并不定位具体的
客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)
客户端请求:是指由
客户端的
套接字提出连接请求,要连接的目标是
服务器端的套接字。为此,
客户端的
套接字必须首先描述它要连接的
服务器的套接字,指出
服务器端套接字的
地址和
端口号,然后就向
服务器端套接字提出连接请求。
(3)连接确认:是指当
服务器端
套接字监听到或者说接收到
客户端套接字的连接请求,它就响应
客户端套接字的请求,建立一个新的线程,把
服务器端套接字的描述发给
客户端,一旦客户端确认了此描述,连接就建立好了。而
服务器端
套接字继续处于
监听状态,继续接收其他
客户端套接字的连接请求。
再来张图看看:
好了至于代码分析嘛由于本人能力有限是再参考别人写的注释下才读懂的所以在这里贴出连接
https://bbs.eeworld.com.cn/thread-452662-1-1.html
个人感觉写的挺好的。。。希望对大家有帮助。