为什么我的Winsock应用程序有时会在listen()和有时在accept()等待?

时间:2015-09-27 21:42:07

标签: c++ sockets visual-c++ winsock

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

2 个答案:

答案 0 :(得分:1)

没有。你的观察是错误的。 listen()不是阻止通话。它只是将端口置于LISTENING状态,并且成功或失败。没有什么可以阻止的。

阻止等待入站连接的accept()

答案 1 :(得分:1)

listen函数将套接字置于侦听模式。你只需要调用一次这个函数。通常,此函数会立即返回。

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