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++ - Errore Bind Client/Server Linux-Windows
Forum - C/C++ - Errore Bind Client/Server Linux-Windows

Avatar
Valcars (Normal User)
Newbie


Messaggi: 20
Iscritto: 29/05/2012

Segnala al moderatore
Postato alle 23:43
Mercoledì, 04/12/2013
Salve a tutti è da tanto che non scrivevo qui ma rieccomi a lamentarmi :)....
stavo creando un Client/Server su linux che però lo volevo compilarte sia su linux che su windows beh il mio problema è questo ho scritto i file con degli header creati da me e quando compilo il programma su linux non mi da nessun errore e gira perfettamente invece dopo aver compilato gli stessi file su windows (senza aver riscontrato errore) quando vado ad avviare il programma da terminale mi dice Errore durante il Bind() <--- Ovviamnente quello è il messaggio di errore che ho scritto io cmq vi provo a postare il codice perchè ragazzi non so dove sto sbagliando :(

File Header:
Codice sorgente - presumibilmente C++

  1. wlsock.h
  2.  
  3. char *ip;
  4. struct sockaddr_in service, service2;
  5. int m_socket;
  6. int c_socket;
  7. int c;
  8.  
  9.  
  10. #ifdef __unix__
  11.  
  12. #include <sys/socket.h>
  13. #include <sys/types.h>
  14. #include <arpa/inet.h>
  15.  
  16.  
  17.  
  18. #elif defined(_WIN32) || defined(WIN32)
  19. #define SO_WINDOWS
  20.  
  21. #include "winsock2.h"
  22.  
  23. WSADATA wsaData;
  24. WORD wVersionRequested;
  25. int wsaerr;
  26.  
  27. #endif




File server.c
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include "wlsock.h"
  3.  
  4. #define Mes printf
  5.  
  6. int main()
  7. {
  8. int a;
  9. Mes("Messaggio benvenuto... \n");
  10.  
  11.  
  12.  
  13. #ifdef SO_WINDOWS
  14.  
  15. //Verifichiamo se c'è la libreria e la dll del winsock
  16. wVersionRequested = MAKEWORD(2,2);
  17.  
  18. wsaerr = WSAStartup(wVersionRequested, &wsaData);
  19. if(wsaerr != 0)
  20.         {
  21.         Mes("La DLL della winsock non e' stata trovata \n");
  22. return 0;
  23.         }
  24. if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
  25.         {
  26.         Mes("La DLL non supporta questa versione di Winsock \n");
  27. return 0;
  28.         }
  29. #endif
  30.  
  31.  
  32. //Creazione Della Socket
  33. m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  34. if(m_socket ==-1)
  35.         {
  36.         Mes("Errore durante la creazione del Socket()! \n");
  37.         return 0;
  38.         }
  39.  
  40. //Settiamo la struttura sockaddr_in
  41. service.sin_family = AF_INET;
  42. service.sin_port = htons(2106);
  43. service.sin_addr.s_addr = inet_addr("127.0.0.1");
  44.  
  45.  
  46.  
  47.  
  48. //Funzione Bind
  49. if(bind(m_socket,(struct sockaddr*) &service, sizeof(service)) < 0)
  50.         {
  51.         Mes("Errore durante la funzione Bind()! \n");
  52.         return 0;
  53.         }
  54.  
  55.  
  56.  
  57. //Funzione Listen
  58. listen(m_socket, 3);
  59.  
  60. //Accetta la connessione
  61. Mes("Attendere la connessione.... \n");
  62.  
  63. while(1)
  64.         {
  65.         //c = sizeof(struct sockaddr_in);
  66.         c_socket = accept(m_socket, NULL, NULL);
  67. //(struct sockaddr*) service2,(socklen_t*)&c);
  68.         if(c_socket < 0)
  69.                 {
  70.                 Mes("Connessione non Accettata! \n");
  71.                 return 0;
  72.                 }
  73.         else
  74.                 {
  75.                 Mes("Connessione Avvenuta con Successo! \n");
  76.                 return 0;
  77.                 }
  78.         }
  79.  
  80.  
  81.  
  82. return 0;
  83. }


Ultima modifica effettuata da Valcars il 04/12/2013 alle 23:48
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:59
Sabato, 07/12/2013
Qui potresti aggiungere:

Codice sorgente - presumibilmente C/C++

  1. Mes("Errore durante la funzione Bind()! \n");
  2.         std::cout << WSAGetLastError();
  3.         return 0;


Ultima modifica effettuata da pierotofy il 07/12/2013 alle 16:59


Il mio blog: https://piero.dev
PM Quote
Avatar
Valcars (Normal User)
Newbie


Messaggi: 20
Iscritto: 29/05/2012

Segnala al moderatore
Postato alle 15:51
Giovedì, 12/12/2013
Buonasera a tutti per non riapire un nuovo topic posto qui sotto perchè il problema è quasi uguale solo che ora l'errore del Bind mi esce su Sistema Operativo Linux. In pratica ho risolto il problema sotto windows grazie all'istruzione di Piero per vedere l'errore, ora volevo sapere se c'è una funzione anche su linux per vedere quale sia l'errore stampandolo sul terminale .... non so se stato abbastanza chiaro :P

PM Quote