嘿伙计我正在使用Visual C ++ 2010,尝试使用Winsock编写服务器/客户端应用程序...我不知道为什么,但有时服务器在listen()函数等待,有时在接受()。只是想知道,这两个功能的机制是什么?是不是应该在listen()等待,直到它听到一个传入的连接,然后继续接受()?
答案 0 :(得分:1)
没有。你的观察是错误的。 listen()
不是阻止通话。它只是将端口置于LISTENING状态,并且成功或失败。没有什么可以阻止的。
阻止等待入站连接的accept()
。
答案 1 :(得分:1)
listen
函数将套接字置于侦听模式。你只需要调用一次这个函数。通常,此函数会立即返回。
通过调用accept
函数接受传入连接。在阻止模式(默认)下,它仅在接受新连接或发生错误时返回。