Winsock:监听和接收(区别)

Winsock: Listen and recv (differences)

我在 winsock 库(TCP/IP 流通信)中找到了函数 listenrecv 的定义。

The listen function places a socket in a state in which it is listening for an incoming connection.

The recv function receives data from a connected socket or a bound connectionless socket.

这是否意味着如果我想从特定套接字接收数据我应该首先使用listen然后recv?我不确定我是否理解正确。

函数listenrecv的功能和用途完全不同。

listen 函数旨在允许等待一个或多个客户端连接的服务器在端口上侦听是否有人连接。

recv函数用于已建立的套接字,接收从该套接字另一端的机器发送的数据。

评论里都提到了,我还要提一下connect。 Connect 是 listen 的对应物。它与侦听机器正在侦听的端口对话,并与该机器建立套接字。

BSD 套接字和 winsock 库没有真正明确的是,从程序员的角度来看,有两种完全不同的套接字,一种是侦听套接字,一种是已建立的套接字。

服务器首先需要创建一个等待客户端的监听套接字,这个套接字用于实际发送任何数据,它的存在只是为了帮助创建已建立的套接字。然而,侦听套接字不会成为已建立的套接字,当客户端连接时,侦听套接字实际上会创建第二个套接字进行数据传输。

已建立的套接字是我们为大多数事情识别和使用的套接字。是一个两端都有机器的socket,监听和发送,进行数据传输。