[R] TCP, Client ET Serveur
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- DJSIR
- Niveau 8

- Messages : 583
- Enregistré le : mar. 01 juil. 2008 15:16
- Localisation : 76, Le HAVRE (in the DJSIR World)
- Status : Hors ligne
[R] TCP, Client ET Serveur
Bonjour. Je recherche comment deux programmes peuvent communiquer mutuellement. J'ai trouvé le protocole TCP.
J'aimerais un script qui puisse envoyer et recevoir des commandes en même temps. Enfin, si je suis serveur, je dois aussi pouvoir envoyer des messages et si je suis client je dois recevoir des messages.
Je ne demande pas d'interface ou un truc vraiment simple pour afficher ce qui à été reçu et ce qui à été envoyé.
Merci.
Et le protocole UDP, quel est la différence ?
EDIT : Je tiens a préciser que j'ai recherché des "chats" TCP sur le forum anglais mais, aucune source ou membre banni... y'en a beaucoup d'ailleurs
J'aimerais un script qui puisse envoyer et recevoir des commandes en même temps. Enfin, si je suis serveur, je dois aussi pouvoir envoyer des messages et si je suis client je dois recevoir des messages.
Je ne demande pas d'interface ou un truc vraiment simple pour afficher ce qui à été reçu et ce qui à été envoyé.
Merci.
Et le protocole UDP, quel est la différence ?
EDIT : Je tiens a préciser que j'ai recherché des "chats" TCP sur le forum anglais mais, aucune source ou membre banni... y'en a beaucoup d'ailleurs
Modifié en dernier par DJSIR le mer. 21 oct. 2009 17:53, modifié 1 fois.
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
UDP est plus rapide que TCP, mais il peut y avoir des perte.
Sinon, reprend l'exemple de la doc ou mieux, le code de L4crymal
http://www.autoitscript.fr/forum/viewto ... 66&start=0
Une foi la connexion établi il te suffit de placer une boucle avec un TCPRecv() pour le controle des donné entrante (voir un adlib) puis un TCPSend() pour l'envoi
Il faut utiliser la meme socket pour l'allez et le retour
Sinon, reprend l'exemple de la doc ou mieux, le code de L4crymal
http://www.autoitscript.fr/forum/viewto ... 66&start=0
Une foi la connexion établi il te suffit de placer une boucle avec un TCPRecv() pour le controle des donné entrante (voir un adlib) puis un TCPSend() pour l'envoi
Il faut utiliser la meme socket pour l'allez et le retour
Signez ici
- DJSIR
- Niveau 8

- Messages : 583
- Enregistré le : mar. 01 juil. 2008 15:16
- Localisation : 76, Le HAVRE (in the DJSIR World)
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Oui mais comment dire.. Il crée un serveur et se connecte a un client... je ne vois pas l'ordre.
Vous avez pas un exemple des deux ensemble ?
Vous avez pas un exemple des deux ensemble ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Dans l'exemple, le server se lance et attend une connexion, accepte et entre dans une boucle. Le client se connecte au server et entre aussi dans une boucle.
C'est cette boucle qui peut etre identique pour les deux, donc qui se charge d'envoyer des info et vérifier si quelque chose arrive.
J'ai pas trop le temps de faire un exemple simple, mais essaye de jetter un coup d'oeil a cela
http://www.autoitscript.fr/forum/viewto ... =%C2%B5vnc
Une foi simplifié tu auras ton exemple, sinon j'en ferais un autre quand j'aurai du temps libre
C'est cette boucle qui peut etre identique pour les deux, donc qui se charge d'envoyer des info et vérifier si quelque chose arrive.
J'ai pas trop le temps de faire un exemple simple, mais essaye de jetter un coup d'oeil a cela
http://www.autoitscript.fr/forum/viewto ... =%C2%B5vnc
Une foi simplifié tu auras ton exemple, sinon j'en ferais un autre quand j'aurai du temps libre
Signez ici
- DJSIR
- Niveau 8

- Messages : 583
- Enregistré le : mar. 01 juil. 2008 15:16
- Localisation : 76, Le HAVRE (in the DJSIR World)
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Euhh. Malgré les exemples, j'ai vraiment du mal ce soir.
Je crée une GUI avec une input et une edit pour afficher ce qui est recu.
J'en crée une autre sur l'ordi distant
on peux pas faire un serveur ET un client ? c'est a dire le serveur recois et le client envoie ?
Je crée une GUI avec une input et une edit pour afficher ce qui est recu.
J'en crée une autre sur l'ordi distant
on peux pas faire un serveur ET un client ? c'est a dire le serveur recois et le client envoie ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Heu, bah bien sur qu'il y a un server et un client. Mais les deux envoi et recoient, la différence se fait sur le fait que le client se connecte au server, c'tout.
Si d'ici demain soir tu ne t'en sors pas, ou si personne ne le fait avant, je créerais un petit exemple
Si d'ici demain soir tu ne t'en sors pas, ou si personne ne le fait avant, je créerais un petit exemple
Signez ici
- DJSIR
- Niveau 8

- Messages : 583
- Enregistré le : mar. 01 juil. 2008 15:16
- Localisation : 76, Le HAVRE (in the DJSIR World)
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Bon j'ai lu jusqu'au bout la page Projet de Script TCP/UDP. Les derniers correspondent à ce que je cherche mais :
J'aimerais que si le client se lance en premier, il devient serveur et si le serveur se lance en premier, il devient client. Possible ?
J'aimerais que si le client se lance en premier, il devient serveur et si le serveur se lance en premier, il devient client. Possible ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] TCP, Client ET Serveur
Hum oui, il suffit que les deux scripts commencent par la procédure client en tentant de se connecter au server, et en cas déchec passent a la procédure server en attendant un client
Signez ici
- DJSIR
- Niveau 8

- Messages : 583
- Enregistré le : mar. 01 juil. 2008 15:16
- Localisation : 76, Le HAVRE (in the DJSIR World)
- Status : Hors ligne
Re: [R] TCP, Client ET Serveur
Merci beacoup.
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
(ne décodez pas le binaire, ça veux rien dire)
[Func] ProgressBar, aller plus loin
Re: [R] TCP, Client ET Serveur
Cette fois j'ai bien lu et relu plusieur fois le post TCP et celui la et je suis perdu (comme une aiguillde dans une botte de foin
)
Si comme tu la si gentilment proposer tu pouvai me faire un es ce cerai gentils
PS : j'ai la darty box et mes deux ordi son connect differament : un par ethernet et un par wifi (car si j'avais bien lu a un momen on parle de routeur et dans ce cas la je crain avoir un souci
)
Merci de votre aide
Si comme tu la si gentilment proposer tu pouvai me faire un es ce cerai gentils
PS : j'ai la darty box et mes deux ordi son connect differament : un par ethernet et un par wifi (car si j'avais bien lu a un momen on parle de routeur et dans ce cas la je crain avoir un souci
Merci de votre aide
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [R] TCP, Client ET Serveur
J'ai été un peu long mais voila donc un exemple
LLe code n'est pas complet, mais résume ce qu'il faut faire. Dans la boucle principal, il suffit de mettre un If $recv Then pour traiter les donnés entrantes et d'utiliser TCPSend() pour en envoyer
Code : Tout sélectionner
TCPStartup()
$ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
If @error Then
$MainSocket = TCPListen($szIPADDRESS, $nPORT)
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
EndIf
While 1
;~ TCPSend($ConnectedSocket, $szData)
;~ $recv = TCPRecv($ConnectedSocket, 2048)
WEnd
TCPShutdown()Signez ici
Re: [R] TCP, Client ET Serveur
J'ai compris la boucle principale mais j'ai du mal a comprendre ce que je dois mettre dans les codes ip passerelles etc
pourriez-vous m'eclairer?
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [R] TCP, Client ET Serveur
$szIPADDRESS c'est l'adresse IP de 'l'autre' (soit en dur dans le script, ou via une inputbox)
$nPORT bah, le port. Si tu vois pas, met juste 45680 ^^
Une foi lancé deux fois, le second se connectera au 1er et vala...
$nPORT bah, le port. Si tu vois pas, met juste 45680 ^^
Une foi lancé deux fois, le second se connectera au 1er et vala...
Signez ici

