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++ - Connessione client/server tramite socket
Forum - C/C++ - Connessione client/server tramite socket

Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 10:34
Lunedì, 18/06/2007
Questa è la parte del client che quando la faccio partire si chiude subito, però nella compilazione non  mi da errori.
//Includo le librerie
#include <stdio.h>
#include <winsock.h>

int bytesInviati;
int bytesRicevuti = SOCKET_ERROR;
char messaggio[32] = "Ciao server!!!";
char recvbuf[32] = "";

//Funzione main
int main()
{
WSADATA wsaData;
SOCKET mysocket;//Creo una variabile socket
int iResult = WSAStartup(MAKEWORD(2 ,2),  &wsaData);
if (iResult != NO_ERROR) {
    printf("Errore nell'inizializzazione!!!\n");
    system("pause");
    return 0;
mysocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//Do un valore alla socket
if (mysocket == INVALID_SOCKET) {//Mi assicuro che non ci siano errori
printf("Errore alla socket(): %ld\n", WSAGetLastError() );
system("pause");
return 0;
}
  //Creo u nuovo elemento sockaddr per connettermi al server
  sockaddr_in clientService;
  clientService.sin_family =  AF_INET;
  clientService.sin_addr.s_addr = inet_addr("127.0.0.1");
  clientService.sin_port = htons(2000);
  if (connect(mysocket, (SOCKADDR*) & clientService, sizeof(clientService)) == SOCKET_ERROR) {
     printf("Connessione fallita.\n");
     WSACleanup( );
     system("pause");
     return 0;
  }
  printf("Connesso al server.\n");
  WSACleanup( );
  system("pause");
  return 0;
  }
  bytesInviati = send(mysocket, messaggio, strlen(messaggio), 0 );//Invio il messaggio
  printf( "Bytes inviati: %ld\n", bytesInviati );
  if ( bytesRicevuti == 0 ||//Controllo che non ci siano errori nel ricevere i dati
  (bytesRicevuti == SOCKET_ERROR && WSAGetLastError()== WSAECONNRESET ))
  {
  bytesRicevuti = recv( mysocket, recvbuf, 32, 0 );
  if ( bytesRicevuti == -1 ) {
     printf( "Connessione chiusa.\n");//Si chiude la connessione
     system("pause");
     return 0;
  }
  if (bytesRicevuti < 0) {//Ricevo i dati
     printf( "Bytes Ricevuti: %ld\n", bytesRicevuti);
     system("pause");
     return 0;
  }
  }
  closesocket(mysocket);//Chiudo la connessione
  WSACleanup();
}

Qualcuno può aiutarmi?

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 14:49
Lunedì, 18/06/2007
Ciao, hai cotrollato sei il messaggio arriva al server? perchè se cosi fosse non ci sarebbero errori nella costruzione.
Una volta inviata la stringa, il server dovrebbe rispondere.....cmq sei sicuro che una volta finita conversazione (stringa/risposta[che puo anche non arrivare]) la connessione fra i due rimanga aperta? :k:


PM Quote