Il mio ultimo pallino è realizzare in C un minimale sistema di Chat tra 2 semplici persone.
Sembra inizialmente funzionare, ma ho un piccolo problema.
Dunque in primis il client chiede ip, porta e nickname da usare. Quindi chiamo socket, connect e poi send per inviare i dati.
Il server, d'altra parte, viene inizializzato con socket, bind, listen accept e poi recv per ricevere i dati.
Bind l'ho fatto su 127.0.0.1 e funziona, ma va bene sempre o dovrò poi mettere l'ip esterno pubblico?
Comunque fortunamtanete i dati a recv arrivano.
Ho quindi deciso che la stringa che identifica il nickname del client deve essere del tipo
Arriva la stringa, la tratto e quindi stabilisco la connessione.
A questo punto, il server, dalla sua parte, fa un send di avvenuta connessione con il nick dell'applicazione server.
Dunque, subit dopo il send nickname del client, ho fatto
codice:
int bytes = recv(sock,buf,100,0);
Il problema che si pone è che la funzione non ritorna mai. Si impalla li aspettando un pacchetto che non arriva mai evidentemente.
Domanda: devo fare bind e listen anche sul socket client che deve ricevere?
Devo fare un connect con il socket del server sul client?
Devo creare un altro socket adibito alla ricezione?
C'è un timeout in cui recv e send dicono basta e ritornano errore?