网络通讯基础(1)
网络上的两个程序通过一个双向的通讯连接实现数据交换,这个连接的一端称为一个socket。
socket通常包含5个信息
1.协议:TCP
2.本地的IP和端口
3.对方的IP和端口
socket网络通讯流程

socket的3次握手
1.客户端请求服务器进行连接(客户端发)
2.服务器同意客户端的连接请求,并要求同客户端建立连接(服务器发)
3,客户端同意服务器的连接请求
从此客户端和服务器建立连接,开始了信息通讯。
socket的4次挥手
挥手,客户端或者服务器发起都可以,这里以客户端发起举例
1.客户端向服务器发请求,中断客户端向服务器的连接
2.服务器同意客户端的中断请求,发同意给客户端。但是服务器可能还有其他数据发给客户端,所以还未中断服务器向客户端的连接
3.服务器向客户端发请求,中断服务器向客户端的连接
4.客户端同意请求
经过time_wait之后,确认服务器受到消息之后,服务器和客户端才完全断开连接。
实践
4种方式
1.同步
客户端: 创建一个socket,connect服务器的IP和端口,send发消息,receive收消息,close关闭客户端,shutdown关闭某些功能
服务器:创建一个socket,bind自己的IP和端口号,listen监听客户端连接,accept客户端,receive收消息,send发消息
2.异步
客户端:创建一个socket,beginConnect异步连接服务器,回调函数中接着处理,beginSend异步发消息,beginReceive异步收消息,他们都有回调函数。
服务器:创建一个socket,bind自己的IP和端口号,listen监听客户端连接,beginAccept接收客户端连接,回调函数中继续调用beginAccept接收其他的客户端。beginSend,beginReceive和客户端用法一致
3.Poll方法
在同步的基础上改进,检查是否可以开始写了或者读了才去调用send或者receive、
4.Select多路复用方法
创建一个读链表,写链表,将各自创建的socket加进去,服务器不仅加自己的还有连接到的客户端的socket。
Socket.Select
具体实践见D盘项目
浙公网安备 33010602011771号