j'ai lu le cours de blacksoul305 sur TCP et IP, j'ai bien compris comment ça marche.
j'ai réussi à faire mon chat, mais ça ne marche que sur mon pc, quand j'essaye de lancer le serveur sur mon pc, et le client sur un autre, ça ne marche pas.
Voilà le code du server :
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $mainSocket, $IP = @IPAddress1, $port = 9989, $max = 50, $socket, $recv = 1
$tosend = ""
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Chat-Server", 411, 277, 192, 124)
Global $txt_messages = GUICtrlCreateEdit("Server démarré" & @CRLF & "En attente d'une connexion", 8, 8, 393, 233, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
Global $btn_send = GUICtrlCreateButton("Envoyer", 328, 248, 75, 25)
Global $txt_message = GUICtrlCreateInput("", 8, 248, 313, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
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
GUICtrlSetData($txt_messages, GUICtrlRead($txt_messages) & @CRLF & "Connected")
While 1
Getinformations()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPCloseSocket($mainSocket) ; on ferme le socket d'écoute
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit
Case $btn_send
$tosend = GUICtrlRead($txt_message)
If $tosend <> "" Then
TCPSend($socket, $tosend)
EndIf
GUICtrlSetData($txt_message, "")
EndSwitch
WEnd
Func Getinformations()
$recv = TCPRecv($socket, 9999) ; on tente la réception d'un paquet
If $recv <> "" Then
GUICtrlSetData($txt_messages, GUICtrlRead($txt_messages) & @CRLF & $recv)
EndIf
Sleep(10) ; toujours pour éviter de surcharger le CPU
EndFunc ;==>Getinformations
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Chat-Client", 427, 433, 192, 124)
Global $txt_messages = GUICtrlCreateEdit("", 8, 8, 409, 385, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
Global $btn_send = GUICtrlCreateButton("Envoyer", 344, 400, 75, 25)
Global $txt_message = GUICtrlCreateInput("", 8, 400, 329, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $socket, $IP = @IPAddress1, $port = 9989
Global $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
GUICtrlSetData($txt_messages, "Connected")
While 1
Getinformations()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPCloseSocket($socket) ; ferme la connexion
TCPShutdown() ; le programme n'utilise plus le protocole TCP/IP
Exit ; le programme se quitte
Case $btn_send
$tosend = GUICtrlRead($txt_message)
If $tosend <> "" Then
TCPSend($socket, $tosend)
EndIf
GUICtrlSetData($txt_message, "")
EndSwitch
WEnd
Func Getinformations()
$recv = TCPRecv($socket, 9999) ; on tente la réception d'un paquet
If $recv <> "" Then
GUICtrlSetData($txt_messages, GUICtrlRead($txt_messages) & @CRLF & $recv)
EndIf
Sleep(10) ; toujours pour éviter de surcharger le CPU
EndFunc ;==>Getinformations
Je poste ici en espérant que j'aurai de l'aide, Merci d'avance