Я хочу создать неблокирующее соединение. Вот так:
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
}
}
Если я запускаю сервер, а затем клиент, все это работает. Если я сначала запускаю клиент, подождите некоторое небольшое время, запустите сервер, а затем клиент не подключится.
Что я делаю неправильно? Может быть, это можно сделать по-другому?