C++ 黑客编程揭秘与防范(第3版)
上QQ阅读APP看书,第一时间看更新

2.1.2 面向连接协议与非面向连接协议所使用的函数

1.面向连接的协议

在面向连接的协议中,两台计算机之间在进行数据收发前,必须先在两者之间建立一个通信信道,以确保两台计算机之间存在一条路径可以互相沟通。在数据传输完毕后,切断这条通信信道。该种方式相当于打电话,用户在手机上拨10086,当客服人员接听后,用户就可以开始通话,通话完毕后就可以挂电话了。

面向连接的协议使用的是TCP,服务器与客户端建立通信信道所需要的基本Winsock函数如下。

服务器端函数:

        socket()->bind()->listen()->accept()->send()/recv()->closesocket()

客户端函数:

        socket()->connet()->send()/recv()->closesocket()

2.非面向连接的协议

在非面向连接的协议中,发送端只要直接将要发送的数据传出即可,不需要理会接收端是否能够收到数据。而接收端在接收到数据时,也不会响应信息通知发送给发送端。该种方式就相当于写信,将写好的信放到信箱中,但是却不能保证收信人真的能够收到这封信件。

非面向连接的协议使用的是UDP,服务器与客户端通信所需要的基本Winsock函数如下:

服务器端函数:

        socket()->bind()->sendto()/recvfrom()->closesocket()

客户端函数:

        socket()->sendto()/recvfrom()->closesocket()

面向连接的Winsock函数与非面向连接的Winsock函数会在后面的部分详细介绍。