我正在编程一个TCP/IP套接字服务器。阻止接受
我的问题是,我接受呼叫阻塞和不接受任何新进来的连接时,我(例如)远程登录我的服务器和不发送任何数据。
当我发送任何或退出的telnet接受停止封锁,我能处理的数据发送和接受开始接受新进来的连接。
main() {
socket = bind_listen();
while(1) {
user_socket = accept(socket);
ssl = SSL_new(ctx);
SSL_set_fd(ssl, user_socket);
SSL_accept(ssl);
event.data.fd = user_socket;
event.events = EPOLLIN | EPOLLONESHOT;
epoll_proof = epoll_ctl(poll_fd, EPOLL_CTL_ADD, user_socket, &event);
}
}
有几个线程epoll_wait()和处理数据。 有什么想法?谢谢!
显示您的代码,最好是可展示问题的最小可编译示例。 –
没有提供足够的细节,但它听起来有点像你没有使用非阻塞套接字。 (在POSIX,这意味着'fcntl'设置'O_NONBLOCK',在Windows中,这意味着一些涉及'ioctlsocket',并在这两个这意味着处理上所有套接字调用'EAGAIN' /'EWOULDBLOCK'错误。) – asveikau
我试图添加O_NONBLOCK但这并没有解决我的问题。 –