Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Socket connessione caduta
Forum - C/C++ - Socket connessione caduta

Avatar
ShellC91 (Normal User)
Newbie


Messaggi: 15
Iscritto: 29/06/2010

Segnala al moderatore
Postato alle 20:42
Martedì, 06/07/2010
Ciao a tutti come posso fare usando i socket (Windows) per verificare quando una connessione cade?

Cosa ritornano la send() e la recv() quando una connessione cade? ritornano 0 o -1 ?

Quale tipo di controllo devo mettere?

Ringrazio in anticipo tutti.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6390
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:09
Martedì, 06/07/2010
send
http://msdn.microsoft.com/en-us/library/ms740149(VS.85).aspx

"Return Value - If no error occurs, send returns the total number of bytes sent, which can be less than the number requested to be sent in the len parameter. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError."


recv
http://msdn.microsoft.com/en-us/library/ms740121(v=VS.85). ...
"Return Value - If no error occurs, recv returns the number of bytes received and the buffer pointed to by the buf parameter will contain this data received. If the connection has been gracefully closed, the return value is zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError."


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ShellC91 (Normal User)
Newbie


Messaggi: 15
Iscritto: 29/06/2010

Segnala al moderatore
Postato alle 21:12
Martedì, 06/07/2010
quindi da quello che ho capito sarebbe:

Codice sorgente - presumibilmente Plain Text

  1. if(send(...) == SOCKET_ERROR)
  2. {
  3.       ...
  4. }


e

Codice sorgente - presumibilmente Plain Text

  1. if(recv(...) == 0)
  2. {
  3.       ...
  4. }



E' giusto?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6390
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:14
Martedì, 06/07/2010
Devi sempre controllare (con send e recv) il SOCKET_ERROR e, in questo caso, controllare l'errore specifico con la API WSAGetLastError.

Per la recv, se hai uno zero (come scritto) la connessione è stata chiusa "correttamente".

Ultima modifica effettuata da nessuno il 06/07/2010 alle 21:17


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote