关于vc下socket编程的listen调用问题
发布网友
发布时间:2022-05-09 17:34
我来回答
共2个回答
热心网友
时间:2023-10-10 18:00
如果你是同步的,阻塞模式(这种模式常用在控制台程序中)的话你应该设置为等到有客户端连接才返回.
如果你的是窗口程序,那么为了保证你在监听中还能处理用户消息不至于出现不响应用户消息的情况,那么你应该设置为异步,非阻塞模式,这种模式下你应该设置套接字为监听状态就返回,设置一个回调函数,如果有客户端连接就,系统调用这个回调函数,后把客户端连接已消息的方式通知应用程序,这个时候,你在回调函数中设置一段相应客户端连接的代码,你就可以既不影响用户消息的处理,又可以处理客户端连接.
总之,如果你的是控制台程序,你就设置为等到有客户端连接才返回,如果你的是窗口程序,你就设置套接字为监听状态就返回.
热心网友
时间:2023-10-10 18:00
listen 会立刻返回,accept 才会造成阻塞。
如果想用异步 SOCKET,直接建立一个继承自 CSocket 的类,重载 OnAccept 来响应 FD_ACCEPT 事件。(CSocket 继承自 CAsyncSocket)
如果直接调用 Winsock 2 API 即 socket, bind, listen, accept,则默认是同步 SOCKET,调用 accept 会阻塞,等到客户端有连接时才返回。