我想创建一个非阻塞连接。像这样:
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
}
}
如果我运行服务器,然后运行客户端,则一切正常。如果我首先运行一个客户端,稍等片刻,运行一个服务器,然后客户端就无法连接。
我究竟做错了什么?也许它可以做得不同?