一 什么是Socket
Socket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递。
所以简而言之,Socket就是进程通信的端点,Socket之间的连接过程可以分为几步:
1、服务器监听
服务器端Socket并不定位具体的客户端Socket,而是处于等待连接的状态,实时监控网络状态
2、客户端请求
客户端Socket发出连接请求,要连接的目标是服务端Socket。为此,客户端Socket必须首先描述它要连接的服务端Socket,指出服务端Socket的地址和端口号,然后就向服务端Socket提出连接请求
3、连接确认
当服务端Socket监听到或者说是接收到客户端Socket的连接请求,它就响 应客户端Socket的请求,建立一个新的线程,把服务端Socket的描述发给客户端,一旦客户端确认了此描述,连接就好了。而服务端Socket继续 处于监听状态,继续接收其他客户端套接字的连接请求
二 Socket的两种模式
Socket有两种主要的操作方式:面向连接和无连接的。
2.1 面向连接的Socket
操作就像一部电话,必须建立一个连接和一人呼叫,所有事情在达到时的顺序与它们出发时的顺序一样,但可靠性,正确性和有序性有所保障
面向连接的操作使用TCP协议。一个这个模式下的Socket必须在发送数据之前 与目的地的Socket取得一个连接,一旦连接建立了,Socket就可以使用一个流接口:打开-->读-->写-->关闭,所有发送 的信息都会在另一端以同样的顺序被接收。面向连接的操作比无连接的操作效率更低,但是数据的安全性更高。
2.2 无连接的Socket
操作就像是一个邮件投递,没有什么 保证,多个邮件可能在达到时的顺序与出发时的顺序不一样。快速、高效,但是数据安全性不佳。
无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有这次投递的信息,就像一个信封,它有目的地址和要发送的内容,这个模式下的Socket并不需要连接一个目的Socket,它只是简单