[R] TCP, Client ET Serveur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
DJSIR
Niveau 8
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

#1

Message par DJSIR »

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
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
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] TCP, Client ET Serveur

#2

Message par Iste »

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
Signez ici
Avatar du membre
DJSIR
Niveau 8
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

#3

Message par DJSIR »

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 ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] TCP, Client ET Serveur

#4

Message par Iste »

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
Signez ici
Avatar du membre
DJSIR
Niveau 8
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

#5

Message par DJSIR »

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 ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] TCP, Client ET Serveur

#6

Message par Iste »

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
Signez ici
Avatar du membre
DJSIR
Niveau 8
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

#7

Message par DJSIR »

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 ?
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] TCP, Client ET Serveur

#8

Message par Iste »

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
Avatar du membre
DJSIR
Niveau 8
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

#9

Message par DJSIR »

Merci beacoup.
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [R] TCP, Client ET Serveur

#10

Message par guitarist »

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 :lol: )
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 :oops: )

Merci de votre aide
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] TCP, Client ET Serveur

#11

Message par Iste »

J'ai été un peu long mais voila donc un exemple

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()
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
Signez ici
guitarist
Niveau 6
Niveau 6
Messages : 235
Enregistré le : mar. 02 déc. 2008 16:59
Status : Hors ligne

Re: [R] TCP, Client ET Serveur

#12

Message par guitarist »

J'ai compris la boucle principale mais j'ai du mal a comprendre ce que je dois mettre dans les codes ip passerelles etc :roll: pourriez-vous m'eclairer?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] TCP, Client ET Serveur

#13

Message par Iste »

$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...
Signez ici
Répondre