Page 1 sur 1

[R] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 18:52
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

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 19:26
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

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 19:30
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 ?

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 20:36
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

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 20:44
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 ?

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 20:48
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

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 20:51
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 ?

Re: [..] TCP, Client ET Serveur

Posté : mar. 20 oct. 2009 21:14
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

Re: [R] TCP, Client ET Serveur

Posté : mer. 21 oct. 2009 17:54
par DJSIR
Merci beacoup.

Re: [R] TCP, Client ET Serveur

Posté : mer. 21 oct. 2009 20:28
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

Re: [R] TCP, Client ET Serveur

Posté : sam. 24 oct. 2009 19:56
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

Re: [R] TCP, Client ET Serveur

Posté : sam. 24 oct. 2009 21:22
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?

Re: [R] TCP, Client ET Serveur

Posté : sam. 24 oct. 2009 21:38
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...