Connection Serveur Client
Voici mon programme Serveur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Int32 PortTCP=13000; //TCPListener ecoute le port 13000
IPAddress* LocalAddress = IPAddress::Parse(S"127.0.0.1");
//On créé le server
TcpListener* ServerTCP = new TcpListener(LocalAddress,PortTCP);
ServerTCP->Start(); // On demarre le server
//Buffer de reception
Byte MessageBytes[] = new Byte[256];
String* MessageString = 0;
while(true) // le server boucle a l'infini
{
Console::Write(S"Attente de connection...");
//AcceptTcpClient est un appel bloquant
//On attend une requete client
TcpClient* ClientTCP = ServerTCP->AcceptTcpClient();
Console::WriteLine(S"\nConnection Etablie!");
MessageString = 0 ;
//Stream utilisé pour lire et ecrire sur la connection
NetworkStream* StreamClient = ClientTCP->GetStream();
Int32 NbBytes;
//On boucle pour recevoir les données du Client.
while(NbBytes = StreamClient->Read(MessageBytes,0,MessageBytes->Length))
{
//Conversion Bytes[] § String*
MessageString = Text::Encoding::ASCII->GetString(MessageBytes,0,NbBytes);
Console::WriteLine(String::Format(S"Données recues : {0}",MessageString));
//On traite les données du client
MessageString = MessageString->ToUpper();
MessageString = MessageString->Insert(0,new String("[Server]MessageRecu:"));
Byte ReponseByte[] = Text::Encoding::ASCII->GetBytes(MessageString);
}
//On ferme la connection
ClientTCP->Close();
} |
Voici mon programme Client :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
String* MessageString = new String("Message du client") ;
String* AdresseServer = new String(S"192.168.0.2"); //IP du destinataire
//Création du client. Même adresse, Même port que le serveur
Int32 PortTCP = 13000;
TcpClient* ClientTCP = new TcpClient(AdresseServer, PortTCP);
//Convertion String*/Bytes[]
Byte MessageByte[] = Text::Encoding::ASCII->GetBytes(MessageString);
//Stream utilisé pour lire et ecrire sur la connection
NetworkStream* StreamClient = ClientTCP->GetStream();
//On envoi le message au serveur TCP connecté
StreamClient->Write(MessageByte , 0 , MessageByte->Length);
Console::WriteLine(S"Envoyé : {0}", MessageString);
//On recoit la réponse du serveur
String* ReponseString = String::Empty;
Byte ReponseBytes[] = new Byte[256];
Int32 NbBytes = StreamClient->Read(ReponseBytes , 0 , ReponseBytes->Length) ;
ReponseString = Text::Encoding::ASCII->GetString(ReponseBytes , 0 , NbBytes);
Console::WriteLine(S"Recu : {0}", ReponseString) ;
//On ferme la connection
ClientTCP->Close() ; |
Lorsque je fait fonctionner le programme en local comme indiquer ci-dessus, ca fonctionne il y a bien communication. Lorsque j'essai de changer l'adresse IP en paramettre de TcpClient...() sur le client ca ne fonctionne plus. J'ai bien verifier l'acces au 2 pc ping et net view, ca communique. Comment faire pour etablir cette liaison ?
D'avance merci. Damien[/code]