13/04/07 14:19
kikkoHack
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
SERVER
Anche quando uso Beatrix capita la stessa cosa....
Aiuto!!!!
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
// ****** 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
// ****** 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 13/04/07 14:21
aaa