Newsgroup: it.comp.lang.c
Titolo: Aiuto programmazione socket!

Ciao a tutti!
Ho iniziato a guardarmi queste cose, e finora tutto bene.   :-)
Il mio non è proprio un problema, è + una sottigliezza;
Per collegarmi ad un server uso l'istruzione:
vai=connect(ok_sock,(struct sockaddr *)&info_server,sizeof(info_server));
vai e ok_sock sono i soliti identificatori di tipo INT, mentre info_server è
la struttura che passa i dati al winsock per l'effettiva connessione.
Come faccio a sapere che valore ritorna la funzione connect se non va a buon
fine la connessione?
Mi spiego; il mio programma dice:
1. Attendere... connessione in corso.
2. Poi, sia che riesce, sia che non riesce (ad esempio se non sono collegato
alla rete), dice : STABILITA.   :-)
E' un po' una cavolata, non vi pare (anche se cmq funziona)?
Volendo far uscire il prog se la connessione non è avvenuta, ho detto: metto
un if; come ragionamento mi sembra buono, o no?
if(vai==*) { printf("Impossibile rilevare il server!\n\n");
                   getch();
                   exit(1);
                }
Che cosa ci va al posto dell'*?
Grazie a chiunque possa aiutarmi.
Alla prossima.
Ciao ciao.
--
================================
       Bisogna saper scegliere in tempo,
         non arrivarci per contrarietà...
------------------------------------------------
           Seeman79 ==> ©D@vide®
              COGITO ERGO SUM!!!
================================

fine la connessione?
NAME       
	connect - initiate a connection on a socket
[...]
RETURN VALUE
       If the connection or binding succeeds, zero is returned.  On error,
	-1  is  returned, and errno is set appropriately.

 includi <errno.h>
..........quando era molto piu' semplice perror("Connect error" )............
Ivan Molella

 Che cosa ci va al posto dell'*?
Se non sbaglio, come quasi tutte le funzioni in ambiente unix la
connect torna un intero: in questo caso, se e' minore di zero dovrebbe
essersi verificato un errore.
Dai un'occhiata alla pagina del manuale (man connect), c'e' tutto
quello che ti serve.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

                }
come sopra...
if(connect(...) < 0)
{
printf("Errore %s durante la connect", strerror(errno));
exit(1);
}
ok ho fatto il figo, facendo un strerror(errno) ti converte il codice
di errore (errno) in una stringa capibile (tipo: Server busy...)
includi <errno.h>
bye

..........quando era molto piu' semplice perror("Connect error" )............
beh ma la tua stampa solo la stringa "Connect error" sullo standard
error, la mia stampa l'effettivo errore avvenuto interrogando il errno
e convertendo tale numero in una frase + intellegibile...
cosi' e' piu' userfriendly :-)
bye

ScatMan wrote:

Scusa allora perche' io avrei usato perror invece di printf se avessi voluto
soltanto stampare "Connect error" a video?.......................
Ivan Molella

Grazie a tutti ragazzi!
Non so davvero come ringraziarvi.
Alla prossima.
Ciao ciao.
--
================================
             Mind is like a parachutes;
             You have to keep it open!
------------------------------------------------
            Seeman79 ==> ŠD@videŽ
              COGITO ERGO SUM!!!
================================