为什么我的Winsock应用程序有时等待listen(),有时等待accept()

Why does my Winsock app sometimes wait at listen() and sometimes at accept()?

本文关键字:等待 accept 我的 Winsock 应用程序 listen 为什么      更新时间:2023-10-16

嘿,伙计们,我正在使用Visual c++ 2010,试图使用Winsock编写一个服务器/客户端应用程序…我不确定为什么,但有时服务器在listen()函数等待,有时在accept()函数等待。我想知道,这两个功能的作用机制是什么?它不应该在listen()中等待,直到它听到传入的连接,然后继续accept()吗?

listen函数使套接字进入监听模式。你只需要调用这个函数一次。通常情况下,该函数会立即返回。

通过调用accept函数接受传入的连接。在阻塞模式(默认)下,它只在接受新连接或发生错误时返回。

没有。你的观察是错误的。listen()为非阻塞呼叫。它所做的只是将端口置于LISTENING状态,这要么成功,要么失败。没有什么可阻挡的

accept()阻塞,等待入站连接