我正在编写一个 TCP/IP Socketserver。
我的问题是,当我(例如)远程登录我的服务器并且不发送任何数据时,我的接受呼叫被阻止并且不接受任何新的传入连接。
当我发送任何内容或退出 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() 并处理数据。任何的想法?谢谢!