begin process at 2012 05 29 11:39:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Echange de donées entre deux applications en réseau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Echange de donées entre deux applications en réseau

jeudi 7 juin 2007 à 16:17:49 | Echange de donées entre deux applications en réseau

youdream

Membre Club
j'expose mon soucis, j'ai deux pc en réseau, ils tournent avec XP Pro. j'ai programmé deux applications (une sur chaque pc) avec visual studio 2005 en C++. Voila le problème, la première doit envoyer des données à la deuxième. La deuxième traite les données et renvoi les résultats à la première. Si quelqu'un pouvais m'aider à trouver comment faire cela... parce que la j'en ai marre. pour info, j'ai essayé les fichiers masqués mais ca marche que si les applications sont lancées sur le même PC.
Merci d'avance.
jeudi 7 juin 2007 à 20:25:33 | Re : Echange de donées entre deux applications en réseau

darunia

Salut, il faut utiliser les sockets. Cherche, il y a plein d'exemple d'utilisation de WinSock (librairie permettant d'exploiter les sockets sous Windows).
vendredi 8 juin 2007 à 09:16:27 | Re : Echange de donées entre deux applications en réseau

youdream

Membre Club
ok je vais chercher dans ce sens la. merci a toi darunia
samedi 9 juin 2007 à 09:07:10 | Re : Echange de donées entre deux applications en réseau

louis14

tu peux aussi mapper des fichiers sur le PC distant.

louis14
mardi 12 juin 2007 à 16:33:55 | Re : Echange de donées entre deux applications en réseau

youdream

Membre Club
Je peux mapper a distance, ca je sais. mais je n'arrive pas à mapper deux .exe qui n'ont pas le même nom (deux processus distincts). ce serais sympa de me mettre sur la voie.
mardi 12 juin 2007 à 20:31:40 | Re : Echange de donées entre deux applications en réseau

darunia

Mais voyons, on n'utilise pas des fichiers pour faire communiquer des processus distant.
Il faut utiliser des sockets !

 D@runia
mercredi 13 juin 2007 à 08:12:20 | Re : Echange de données entre deux applications en réseau

youdream

Membre Club
Le socket fonctionne en communication. mais toujours un petit hic : je transmet trois données et la dernière transmise écrase les deux autres. la partie de code ou je pense fais défaut, ca donne:
...
for(int i=0;i<3;i++)
{
   ...
   if(i = = 0)   var1 = buffer;
   if(i = = 1)   var2 = buffer;
   if(i = = 2)   var3 = buffer;
}
...
j'espère que c'est suffisant sinon, je verrais pour en mettre plus si mon maitre de stage est d'accord...
mercredi 13 juin 2007 à 09:40:48 | Re : Echange de donées entre deux applications en réseau

youdream

Membre Club

char * parametres[3];

 

                          // Définition des variables

                         WSADATA initialisation_win32;                                                                            // Variable permettant de récupérer la structure d'information sur l'initialisation

                          int erreur;                                                                                                    // Variable permettant de récupérer la valeur de retour des fonctions utilisées

                          int tempo;                                                                                                     // Variable temporaire de type int

                          int nombre_de_caractere;                                                                                 // Indique le nombre de caractères qui a été reçu ou envoyé

                          char buffer[5];                                                                                          // Tampon contenant les données reçues ou envoyées

                         SOCKET id_de_la_socket;                                                                                  // Identifiant de la socket

                         SOCKADDR_IN information_sur_la_source;                                                             // Déclaration de la structure des informations lié à l'écoute

 

                          // Initialisation de Winsock

                         erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);

                          if (erreur!=0)

                              MessageBox::Show("Désolé, initialisation Winsock impossible","Erreur",MessageBoxButtons::OK,MessageBoxIcon::Error);

           

                          // Ouverture d'une Socket

                         id_de_la_socket=socket(AF_INET,SOCK_DGRAM,0);

                          if (id_de_la_socket==INVALID_SOCKET)

                               MessageBox::Show("Désolé, création du socket impossible","Erreur",MessageBoxButtons::OK,MessageBoxIcon::Error);

     

                          // Lie la socket à une ip et un port d'écoute

                         information_sur_la_source.sin_family=AF_INET;

                         information_sur_la_source.sin_addr.s_addr=INADDR_ANY;                                        // Ecoute sur toutes les IP locales 

                         information_sur_la_source.sin_port=htons(33333);                                             // Ecoute sur le port 33333

                         erreur=bind(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source));

                          if (erreur!=0)

                              MessageBox::Show("Désolé, écoute ce port impossible","Erreur",MessageBoxButtons::OK,MessageBoxIcon::Error);

 

                          // Reception des données

                          for(int i=0;i<3;i++)

                         {

                              tempo=sizeof(information_sur_la_source);                                                     // Passe par une variable afin d'utiliser un pointeur

                              nombre_de_caractere=recvfrom(id_de_la_socket,buffer,1515,0,(struct sockaddr*)&information_sur_la_source,&tempo);

                              buffer[nombre_de_caractere]=0;                                                                     // Permet de fermer le tableau après le contenu des data, car la fonction recvfrom ne le fait pas

           

                               String ^attente = gcnew String(buffer);

                              MessageBox::Show("buffer = " + attente + " ; i = " + i);

                              

                              parametres[i] = buffer;

                              

                              String ^atpar0 = gcnew String(parametres[0]);

                              String ^atpar1 = gcnew String(parametres[1]);

                              String ^atpar2 = gcnew String(parametres[2]);

                              

                               MessageBox::Show("parametres0 = " + atpar0);

                              MessageBox::Show("parametres1 = " + atpar1);

                              MessageBox::Show("parametres2 = " + atpar2);

                         }

                         

                          // Fermeture de la socket correspondant à la commande socket()

                         erreur=closesocket(id_de_la_socket);

                          if (erreur!=0)

                              MessageBox::Show("Désolé, libération du socket impossible","Erreur",MessageBoxButtons::OK,MessageBoxIcon::Error);

 

                          String ^numTest = gcnew String(parametres[0]);

                         String ^valRes = gcnew String(parametres[1]);

                         String ^valTemps = gcnew String(parametres[2]);

 

                         MessageBox::Show("numTest : " + numTest);

                         MessageBox::Show("valRes : " + valRes);

                          MessageBox::Show("valTemps : " + valTemps);

 

                         test::Form1::Text += "Console de test " + numTest;

 

                          //Affichage des arguments dans un label

 

                         label1->Text += "Valeur résistance : ";

                         label1->Text += valRes;

                          label1->Text += " Ohm(s)";

                         label1->Text += "\n\n";

                          label1->Text += "Valeur échantillonage : ";

                         label1->Text += valTemps;

                          label1->Text += " Seconde(s)";

                         label1->Text += "\n\n";

                         label1->Text += "N° du test : ";

                          label1->Text += numTest;

voila le code...
mercredi 13 juin 2007 à 13:03:26 | Re : Echange de donées entre deux applications en réseau

darunia

D'abord, je vois que ton code est en .net.
Dans ce cas, il vaudrait mieux utiliser les classes du framework qui se trouvent dans System.Net.Socket.

Ensuite, je te conseille d'utiliser des acquitements. Concretement, envoyer un octet à l'envoyeur une fois que la donnée a été reçue. Ca permet de bien synchroniser le client et le serveur.

D@runia
mercredi 13 juin 2007 à 14:44:09 | Re : Echange de donées entre deux applications en réseau

youdream

Membre Club
c'est ce que j'ai fais et ca marche. merci pour votre aide précieuse. une dernier chose : j'aimerais attendre la fermeture de la form2 pour poursuivre le code de la form1 qu'il y a après l'appel de la procédure qui ouvre la form2. merci encore...

1 2

Cette discussion est classée dans : pc, réseau, applications, echange, donées


Répondre à ce message

Sujets en rapport avec ce message

Récupérer Domaine/Workgroup des pc du réseau [ par jefy ] JefyJ'utilise Builder6 et je cherche le moyen de récupérer les Domaines ou Workgroups du réseau (accessoirement les pc qui en font partie).merci d'ava Communiquer avec un réseau local via internet ? ? ? [ par supergrey ] Bonjour, je souhaite développer une application de communication par internet. J'ai pris comme base une source de chat client/serveur : on lance le se CopyFile en réseau [ par HeavenForsaker ] Bonjour,Je voudrais avoir la confirmation que la fonction CopyFile permet de copier un fichier sur le réseau local car je n'ai pas la possibilité de l Lister les PC d'un réseau LAN (Builder C++) [ par norton ] Bonjour à tous, Dans le cadre d'un cours de programmation réseau, je dois trouver un moyen de lister tous les pc's d'un réseau lan.J'ai cherché sur le Réseau [ par blackjak87 ] bjr tout le monde, j'ai un petit problème avec mon PAN (Personal Aerea Network) a la maison, alors j'ai un PC P4 avec Windows XP  et une connexion ADS Visual C++, Comment changer le dns d'un pc situé sur un réseau ? [ par Braho ] Bonjour, Je cherche a faire une fonction qui permette de changer de dns sur unposte connecté sur un réseau. Est ce qu'il y a une commande déja toutep envoyer des fichier sur un réseau local [ par supergrey ] Salut, j'ai fait l'acquisition d'un modem routeur pour mes 2 PC mais le partage de fichiers de windows XP foire.J'ai vérifié que les PC ping bien et d Surveillance réseau [ par jecmac ] Bonjour, je recherche un programme pouvant surveiller des PC en réseau, je voudrais l'installer sur un pc maitre mais rien sur les pc esclave car ça m [Problème] Se connecter à un pc à distance en C++ [ par mt3b42 ] Bonjour à tous , Je voudrais créer un programme qui se connecte sur un pc du même réseau et qui récupère des informations . Mais problème ,je ne trouv


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales