Je veux créer une connexion non bloquante. Comme ça:
socket.connect(); // returns immediately
Pour cela, j'utilise un autre fil, une boucle infinie et une epoll linux. Comme ceci (pseudocode):
// 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
}
}
Si j'exécute un serveur, puis un client, tout cela fonctionne. Si j'exécute d'abord un client, attendez un peu de temps, exécutez un serveur, puis le client ne se connecte pas.
Qu'est-ce que je fais mal? Peut-être que cela peut être fait différemment?
Il existe quelques façons de tester si un Connect non bloquant réussit.
Réf: Programmation de réseau Unix v1