kikkoHack (Normal User)
Newbie
Messaggi: 6
Iscritto: 18/02/2007
|
Salve a tutti .... sono un nuovo utente....
Ho un piccolo problema che vorrei cercare di risolvere....
Mi sono da poco avvicinato alla Programmazione delle socket e ho creato due
programmini ( client e server ) che comunicano tra loro su due PC
collegati a internet in maniera differente:
il primo ( 1 ) attraverso connessione wireless;
il secondo ( 2 ) attraverso connessione ethernet ( cavo );
il problema è questo:
quando (1) è client e (2) è server tutto ok!!! la connessione avviene!!!!
nel caso inverso NO.... credo per una questione di Ip ...
CLIENT
Codice sorgente - presumibilmente C++ |
// ****** Inclusione delle Librerie ****** #include <windows.h> #include <stdio.h> #include <string.h> #include <winsock.h> #pragma comment(lib,"Ws2_32.lib") #define MB 1024 char mex_ricevuto [MB]; char mex_inviato [MB]= "CoNnEsSiOnE AvVeNuTa cOn sUcCeSsO\n\n\n-== CLIENT ==- "; // ****** Funzione main( ) void main() { WSADATA wsaData; SOCKET Sock; // Variabili tipo SOCKET WSAStartup(MAKEWORD(2 ,2), &wsaData); /* Creazione socket */ Sock= socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); /* Riempiamo la struttura */ SOCKADDR_IN service; service.sin_family = AF_INET; service.sin_port = htons( -porta- ); service.sin_addr.s_addr = inet_addr( "---Indirizzo IP---" ); /* Connessione al Server */ connect( Sock , (SOCKADDR*)&service , sizeof(service) ); /* Funzione send( ) */ send( Sock , mex_inviato , strlen(mex_inviato)+1, 0 ); /* Funzione recv( ) */ int ibyte; ibyte = recv( Sock, mex_ricevuto , MB , 0 ); printf("%s \n\n",mex_ricevuto); printf("Byte ricevuti :\t %d\n\n\n",ibyte); /* Chiusura del programma */ closesocket(Sock); WSACleanup(); }
|
SERVER
Codice sorgente - presumibilmente C++ |
// ****** Inclusione delle Librerie ****** #include <windows.h> #include <stdio.h> #include <string.h> #include <winsock.h> #pragma comment(lib,"Ws2_32.lib") #define MB 1024 char mex_ricevuto [MB]; char mex_inviato [MB]= "CoNnEsSiOnE AvVeNuTa cOn sUcCeSsO\n\n\n-== SERVER ==- "; // ****** Funzione main( ) void main() { WSADATA wsaData; SOCKET ServerSocket, ClientSocket; // Variabili tipo SOCKET WSAStartup(MAKEWORD(2 ,2), &wsaData); ServerSocket= socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); /* Riempiamo la struttura */ SOCKADDR_IN service; service.sin_family = AF_INET; service.sin_port = htons( 4444 ); service.sin_addr.s_addr = INADDR_ANY; /* Assegnare porta e Ip alla socket */ bind( ServerSocket, (SOCKADDR*) &service, sizeof(service)); /* Mettiti in ascolto per al massimo 1 client */ listen(ServerSocket,1); /* Accettare una nuova connessione... */ printf( "Aspetto connessione Client...\n\n\n" ); while(TRUE) { ClientSocket = SOCKET_ERROR; while ( ClientSocket == SOCKET_ERROR ) ClientSocket = accept( ServerSocket, NULL, NULL ); printf( "Client Connesso\n\n\n"); break; } /* Funzione recv( ) */ int ibyte; ibyte = recv( ClientSocket, mex_ricevuto , MB , 0 ); printf("%s \n\n",mex_ricevuto); printf("Byte ricevuti :\t %d\n\n\n",ibyte); /* Funzione send( ) */ send( ClientSocket , mex_inviato , strlen(mex_inviato)+1 ,0); /* Chiusura del programma */ closesocket (ServerSocket); closesocket (ClientSocket); WSACleanup(); }
|
Anche quando uso Beatrix capita la stessa cosa....
Aiuto!!!! Ultima modifica effettuata da kikkoHack il 13/04/2007 alle 16:21 |