我正在編程一個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但這並沒有解決我的問題。 –