ノンブロッキング接続を作成したい。このような:
socket.connect(); // returns immediately
このために、別のスレッド、無限ループ、および Linux epoll を使用します。このように(疑似コード):
// in another thread
{
create_non_block_socket();
connect();
epoll_create();
epoll_ctl(); // subscribe socket to all events
while (true)
{
epoll_wait(); // wait a small time(~100 ms)
check_socket(); // check on EPOLLOUT event
}
}
サーバーを実行してからクライアントを実行すると、すべて機能します。最初にクライアントを実行し、しばらく待ってからサーバーを実行すると、クライアントが接続しません。
私は何を間違っていますか?多分それは別の方法で行うことができますか?