Faire communiquer deux PC via un socket [Résolu]

Utilisateur anonyme - 6 août 2005 à 18:44 - Dernière réponse : jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention
- 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?
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Utilisateur anonyme - 7 août 2005 à 00:33
3
Merci
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

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 6 août 2005 à 19:15
0
Merci
tu as realisé un protocol de commande personnel
C juste comme idée ....faites le tu es sur le bon chemain.
Commenter la réponse de walid2876
Utilisateur anonyme - 6 août 2005 à 19:35
0
Merci
tu appelles quoi par protocol de commande personnel?
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 6 août 2005 à 20:57
0
Merci
Autre question ? "le texte" tu dois le convertir en binaire et puis l'envoyer ou tu lance le message "HORLOGE" directement ?
Commenter la réponse de Utilisateur anonyme
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 7 août 2005 à 00:01
0
Merci
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
Commenter la réponse de walid2876
Utilisateur anonyme - 7 août 2005 à 00:06
0
Merci
Excuse mais j'ai rien compris mort de rire. On peut le refaire tout doucement ?
Commenter la réponse de Utilisateur anonyme
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 7 août 2005 à 00:19
0
Merci
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
Commenter la réponse de walid2876
Utilisateur anonyme - 7 août 2005 à 00:22
0
Merci
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 ?
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 7 août 2005 à 00:27
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 7 août 2005 à 00:29
0
Merci
Je pense que je vais m'en sortir maintenant à oui je rectifie pour le C++
Char chaine[3] et non Char chaine[3;
Commenter la réponse de Utilisateur anonyme
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 7 août 2005 à 00:30
0
Merci
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
Commenter la réponse de walid2876
Utilisateur anonyme - 7 août 2005 à 00:31
0
Merci
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;
};
Commenter la réponse de Utilisateur anonyme
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 7 août 2005 à 08:38
0
Merci
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;
Commenter la réponse de jlen100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.