Faire communiquer deux PC via un socket

Résolu
Utilisateur anonyme - 6 août 2005 à 18:44
jlen100
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
- 7 août 2005 à 08:38
Bon je connais le principe si je veux demande à un client de dire à un serveur d'effectuer une tache par exemple ouvrir l'horloge de windows

On fait un socket sur le client et un socket sur le serveur. Ensuite il faut envoyer un string du client vers le serveur. Là c'est le trou noir pour moi.

En fait je suis pas sur de bien comprendre

Pour moi cela veut dire

Serveur :

Si tu recois le texte "Horloge" par le socket
alors tu ouvres l'horloge.



Client

Si tu appuye sur le bouton Horloge tu envoyes le texte horloge au serveur par le socket.

Donc si on appuye sur le bouton HORLOGE, l'horloge Windows s'ouvre sur le serveur. Je me trompes ou pas?

13 réponses

Utilisateur anonyme
7 août 2005 à 00:33
Walid si tu étais une femme je t'épouserai mdrrrrrr. Merci pour tout et la tu viens de répondre à une question que beaucoup de bleus doivent se poser. Merci pour eux et pour moi
3
walid2876
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

6 août 2005 à 19:15
tu as realisé un protocol de commande personnel
C juste comme idée ....faites le tu es sur le bon chemain.
0
Utilisateur anonyme
6 août 2005 à 19:35
tu appelles quoi par protocol de commande personnel?
0
Utilisateur anonyme
6 août 2005 à 20:57
Autre question ? "le texte" tu dois le convertir en binaire et puis l'envoyer ou tu lance le message "HORLOGE" directement ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
walid2876
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

7 août 2005 à 00:01
un protocol c un language et un ensemble de regles pour communiquer entre reseaux comme Tcp/Ip


donc toi tu definis un protocol pour des commande exemple


Horloge c'est a dire executer l'horloge tu peux envoyer comme texte


SendText('Horloge') ou Tu definis comme code par exemple


Si tu envoie Un 1 c'est a dire executer Horloge


si tu envoie un 2 c'est a dire executer autre choses


donc tu as le chois de definir tes commandes comme text ou comme code ou un enregistrement paramétré comme:


type commande=record


code_commande:integer;


param1,param2:longint;ou string ou .......


end ;


et tu l'envoie avec sendbuf ou sendstream ça depond de ce que tu veux faire


ça on l'appelle un petit protocol de communiquation entre deux application Client et serveur
0
Utilisateur anonyme
7 août 2005 à 00:06
Excuse mais j'ai rien compris mort de rire. On peut le refaire tout doucement ?
0
walid2876
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

7 août 2005 à 00:19
Le terme Protocol Comme Un pacte de communication
si ce terme ne fais pas son vrai sens ici dans ton example on peux dire un dictionnaire de commande c un peu exacte pour ne pas donner a ce terme PROTOCOL un sens restreint ....
un autre conseil :
avec les socket et surtout si on veux enoyer des grans tampon (buffer) respecter le retard sur quelque machine lorsque on le fait entre deux machine l'une traite plus vite que l'autre l'information envoyée ou recue , ça provoque la perte des donnée en mode asynchrones (clienttype=ctNonblocking)
donc toujours lorsque on envois une information a un serveur il faut renvoyer un resultat si le transfert a été fais (pour garantir le transfert)
il mieux de faire avec le mode synchrone ; mais a ton exemple moi personnalement je préfere un socket non bloquant pour synchroniser
le partage Commande -----> execution ------> retour resultat
C a mon avis
je suis developpeur en delphi ....
base de donnée , systeme , et je veux agrendie mes connaissance de programmation reseaux et net
0
Utilisateur anonyme
7 août 2005 à 00:22
Bon Walid je t'explique je suis un bleu en Delphi (c'est pas la même chose en C++ sous DOS (on rigole pas svp) mais moi les termes techniques ca me gonfles).


Bon en C++ pour moi :

Serveur

creer le socket
ouvrir le socket
le mettre en écoute
........

Char chaine[3;
switch (char)
{
case 'ABC' : system("DIR");
break;
case 'BAC' : system("TIME");
break;
case 'BCA' : system ("DATE");
break;
};


Je me trompe pas la ? bon sinon pour l'enregistrement paramétré j'ai rien compris et je suis pas sur que cela la meilleure méthode. En fait je veux faire un chat un peu complexe. Alors évidemment si je définit comme message HORLOGE et que cela allume l'horloge, le mec qui va demander l'heure risque d'avoir la réponse malgré lui (mdrrrr). Cependant si je tape "èèèHORLOGEèèè" la il ya beaucoup moins de risque je pense. Par contre si j'envoye un code binaire si le transfert et le traitement seront pas plus rapide qu'un texte ?
0
Utilisateur anonyme
7 août 2005 à 00:27
Ok merci Walid pour tout je vais peut être faire une source bête comme celle de l'horloge pour les débutants comme moi si tu veux m'aider pas de problème.
0
Utilisateur anonyme
7 août 2005 à 00:29
Je pense que je vais m'en sortir maintenant à oui je rectifie pour le C++
Char chaine[3] et non Char chaine[3;
0
walid2876
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

7 août 2005 à 00:30
Serveur :

Si tu recois le texte "Horloge" par le socket
alors tu ouvres l'horloge.
Procedure Tform1.ServerSocket1ClientRead(sender:Tobject;
socket:TCustomSoket)
Begin
if socket.receivetext='horloge' then
// traitement
End;

Client

Si tu appuye sur le bouton Horloge tu envoyes le texte horloge au serveur par le socket.

Procedure Tform1.button1click(sender:Tobject)
Begin
Clientsocket1.sendtext('Horloge');
End;

Donc si on appuye sur le bouton HORLOGE, l'horloge Windows s'ouvre sur le serveur. Je me trompes ou pas? Serveur :

Si tu recois le texte "Horloge" par le socket
alors tu ouvres l'horloge.

C compris comme ça ...ça ce que tu veux faire j dis c juste
et tu peux faire mieux avec les conseils si dessus
0
Utilisateur anonyme
7 août 2005 à 00:31
Décidemment j'accumule les boulettes moi

Pardon à tous et aux administrateurs qui vont me tuer mais j'ai fais une erreur je rectifie (il faut que j'écris doucement lol)

Char chaine[3];
switch (chaine)
{
case 'ABC' : system("DIR");
break;
case 'BAC' : system("TIME");
break;
case 'BCA' : system("DATE");
break;
};
0
jlen100
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
7 août 2005 à 08:38
salut,

petite precision ça ce voit que tu viens du C

en Delphi tu ne peux pas ecrire

Char chaine[3];

switch (chaine)

{

case 'ABC' : system("DIR");

break;

case 'BAC' : system("TIME");

break;

case 'BCA' : system("DATE");

break;

};

en effef si l'ecriture equivalente en DELPHI serait

case chaine of

1: begin ...end;

2:begin end;

.

.

.

end;

le compilateur te renverrait une erreur puisque DELPHI n'admet que des scalaires dans l'instruction case;
0