Bonjour à tous,
Cela fait un moment que je n'est pas fait d'autoit, manque de temps mais la le travail m'y oblige.
Je suis entrain de réaliser un programme serveur / client qui a pour but d'envoyer uniquement des touches à une machine distance. Pour ce qui est du sous-réseau je me sert d'hamachi pour ne pas avoir de contrainte au niveau des distances.
Jusque la aucun soucis. Je me sert des scripts présent sur le forum pour le serveur et le client.
Voici à quoi ressemble mon serveur :
► Afficher le texte
Code : Tout sélectionner
Global $mainSocket, $IP = "monip", $port = 9989, $max = 50, $socket, $recv = 1
TCPStartup() ; le programme utilise désormais le protocole TCP/IP
$mainSocket = TCPListen($IP,$port,$max) ; crée un socket de connexion sur le port 9989 pour cinquante connexions au maximum
If $mainSocket = -1 Or $mainSocket = 0 Then ; si on ne peut pas créer le socket
MsgBox(16,"Serveur - erreur", "Impossible de créer un socket d'écoute. Code d'erreur : " & @error)
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit ; on quitte le programme
EndIf
Do
$socket = TCPAccept($mainSocket) ; on accepte une éventuelle connexion
Sleep(10) ; juste pour ne pas surcharger le CPU
Until $socket <> -1 ; si la condition est vérifiée, une connexion est établie
While $recv <> "exit" ; on dialogue jusqu'à ce que l'on reçoive l'ordre de quitter le programme
$recv = TCPRecv($socket,9999) ; on tente la réception d'un paquet
If $recv <> "" Then
Local $tempArray
$tempArray = StringSplit($recv,"|")
If Not @error Then ; si nous avons bien une commande
Local $type = $tempArray[1] , $title = $tempArray[2], $message = $tempArray[3] ; on distribue les arguments
;MsgBox($type,$title,$message) ; on appelle la commande avec les bons arguments
Send($message)
EndIf
EndIf
Sleep(10) ; toujours pour éviter de surcharger le CPU
WEnd
TCPCloseSocket($mainSocket) ; on ferme le socket d'écoute
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit ; on quitte le programme
Et voici à quoi ressemble mon client :
► Afficher le texte
Code : Tout sélectionner
Global $socket, $IP = "monip", $port = 9989
Global $begin, $type, $title, $message, $toSend
TCPStartup() ; le programme utilise désormais le protocole TCP/IP
$socket = TCPConnect($IP,$port) ; on tente une connexion à l'IP xxx.xxx.x.xxx
If $socket = -1 Or $socket = 0 Then ; si on ne peut pas se connecter
MsgBox(16,"Client - erreur", "Impossible de se connecter. Code d'erreur : " & @error)
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit ; on quitte le programme
EndIf
Do
$begin = InputBox("Client - MsgBox","Voulez-vous envoyer une MsgBox personnalisée ? 'Oui' ou 'Non'. 'Exit' pour quitter.")
If $begin = "Oui" Then
$type = InputBox("Client - Type de MsgBox","Code du type de MsgBox") ; on rentre le type
$title = InputBox("Client - Titre de la MsgBox","Titre de la MsgBox") ; on rentre le titre
$message = InputBox("Client - Message de la MsgBox","Message de la MsgBox") ; on rentre le message
$toSend = $type & "|" & $title & "|" & $message ; on crée le paquet
ElseIf $begin = "Exit" Then ; si jamais on veut quitter
$toSend = "Exit" ; on envoit le paquet correspondant
EndIf
If $toSend <> "" Then TCPSend($socket,$toSend) ; on envoie le paquet
Until $begin = "exit"
TCPCloseSocket($socket) ; ferme la connexion
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit ; le programme se quitte
J'ai tenter plusieurs solution comme "HotKeySet" ou encore "_IsPressed" mais rien n'est fait je n'arrive pas a envoyer une touche directement à l'autre pc. Dans ce script en rentrant le nom de la touche dans la dernière input ($message) pas de soucis la touche s'envoie correctement.
Mais j'aimerais que dès qu'une touche est appuyer chez le client, alors le serveur la reçoit et sans que le client est a remplir un input x) Je débute en TCP / IP donc soyer indulgent.
Vous me direz également pourquoi ne pas utiliser TeamViewer ? Simple, je veux tester une différence de réactivité en passant directement par un serveur hamachi que par les serveurs de TV.
Merci d'avance les amis
