gpt4 book ai didi

c++ - accept() 函数充当非阻塞

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:37 27 4
gpt4 key购买 nike

我正在使用等待客户端连接的 Winsock 编写服务器程序。代码是这样的:

#include <winsock.h>
#pragma comment(lib, "wsock32.lib")

WSADATA wsaData;
WSAStartup(0x101, &wsaData);
SOCKET listeningSocket;
listeningSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr.s_addr = INADDR_ANY;
serverInfo.sin_port = htons(80);

bind(listeningSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));
listen(listeningSocket, 5);

SOCKET theClient;
while(true)
{
theClient = accept(listeningSocket,NULL,NULL);
....
recv(theClient,Message,strlen(Message),0);
....
....
}

我遇到的问题是服务器不等待客户端并在 accept() 函数之后继续执行。具体来说,accept() 函数不会阻止执行。

最佳答案

您应该检查所有库函数的返回值。可能是早期调用(例如 bind())失败了,但您永远不会发现,因为您忽略了返回值。

关于c++ - accept() 函数充当非阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com