CODE DU SERVER MULTI CLIENTS:
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Dim $szIPADDRESS
$szIPADDRESS = InputBox("Connexion à un SERVER", "IP du SERVER : ", @IPAddress1)
;==============================================
;==============================================
;SCRIPT DU SERVER ; A LANCER EN PREMIER
;==============================================
;==============================================
Example()
Func Example()
    
    Sleep (100)
    ; INFOS A COMPLÉTÉES
    Local $nPORT = 14584
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv
    Dim $recvstring
    ; Lancement des services TCP
    ;==============================================
    ; Si la connection au port à échouée, alors on recommence
    ; Création d'un GUI pour recevoir des données d'un autre PC part le port ouvert
    ;==============================================
    $GOOEY = GUICreate("Mon Server (IP: " & $szIPADDRESS & ")", 300, 200)
    $edit = GUICtrlCreateEdit("", 10, 10, 280, 180)
    GUISetState()
    ; Initialisation de la variable définissant la connexion
    ;==============================================
    ; Fenêtre GUI affichant les données envoyées
    ;==============================================
    While 1
        
    TCPStartup()
    ; Ouverture d'un port sur le reseau / ATTENTION UN PARE FEU PEU BLOQUER CETTE FONCTION
    ; Utilisation pour l'ouverture de : L'ip Privée (@IPAddress1) avec le port 14584 (inutilisé normalement)
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT,5000)
    $ConnectedSocket = -1
    ;Attente d'une demande de connection
    ;==============================================
        ;MsgBox(0,"","do")
            Do
        $ConnectedSocket = TCPAccept($MainSocket)
                $msg = GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then Exit
    $szIP_Accepted = SocketToIP($ConnectedSocket)
    Until $ConnectedSocket <> -1
       
        $msg = GUIGetMsg()
        ; Fermeture de la GUI
        ;--------------------
        If $msg = $GUI_EVENT_CLOSE Then Exit
        ; Reçoit des données à partir du port connecté / 2048 bytes maximum
        ;----------------------------------------------------------------
        $recv = TCPRecv($ConnectedSocket, 2048)
        ; Si les données on mal été reçues, le SERVER se ferme
        ;----------------------------------------------------------------
        $recvstring=StringSplit($recv,"\")
        ; Rafraichissement des données envoyées
        ;----------------------------------------------------------------
        If $recv <> "" Then GUICtrlSetData($edit, _
           $recvstring[1] & " > " & $recvstring[2] & @CRLF & GUICtrlRead($edit))
               TCPShutdown()
    WEnd
    TCPShutdown()
EndFunc   ;==>Example
; Fonction permettant de connaitre l'adresse IP du CLIENT connecté au SERVER
;----------------------------------------------------------------------
Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet
   
    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")
    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
            "ptr", DllStructGetPtr($sockaddr), "ptr", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
        $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
        If Not @error Then $aRet = $aRet[0]
    Else
        $aRet = 0
    EndIf
    $sockaddr = 0
    Return $aRet
EndFunc   ;==>SocketToIP► Afficher le texte
Code : Tout sélectionner
#include <Inet.au3>
$yourip=_GetIP()
$szIPADDRESS = InputBox("Connexion à un SERVER", "IP du SERVER : ", @IPAddress1)
Opt('MustDeclareVars', 1)
;==============================================
;==============================================
;SCRIPT DU CLIENT ; A LANCER EN DEUXIEME
;==============================================
;==============================================
Example()
Func Example()
    ; INFOS A COMPLÉTÉES
    Local $ConnectedSocket, $szData
    Local $nPORT = 14584
    ; Lancement des services TCP
    ;==============================================
    ; Si une erreur existe alors on l'envoie par MsgBox puis le script se ferme
    If @error Then
        MsgBox(4112, "Error", "TCPConnect failed with WSA error: " & @error)
        ; Si il n'y a pas d'erreur le CLIENT est connecté au SERVER
                TCPStartup()
    Else
        ;Demande de données à envoyées
        While 1
    ; Initialisation de la variable définissant la connexion
    ;==============================================
    
            ; InputBox des données à envoyées
            $szData = InputBox("Data for Server", @LF & @LF & "Enter data to transmit to the SERVER:")
            ; Si il y a une erreur ou si le bouton annuler est préssé le script se ferme, si les données envoyées sont nul, ne rien faire
            If @error Then
                MsgBox(0,"","do")
            Exit
                
        ElseIf $szData = "" Then 
            Sleep (0)
            
            EndIf
            ; Envoie des données vers le SERVER
$ConnectedSocket = -1
    ;Connection sur le SERVER d'adresse IP:*voir ImputBox* avec le port 14584 (inutilisé normalement)
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
            TCPSend($ConnectedSocket, $yourip&"\"&$szData)
            ; Si les données n'ont pas été envoyées, le CLIENT se Déconnecte
            ;----------------------------------------------------------------
            If @error Then MsgBox(0,"","doap")
        WEnd
    EndIf
EndFunc   ;==>ExampleDites moi ce que vous en penser, merci.
Proposez des améliorations niveau performances si vous voulez ^^






 Merci. Je pensais que cela pouvais servir à ceux qui veulent faire des mini MMORPG ^^.
 Merci. Je pensais que cela pouvais servir à ceux qui veulent faire des mini MMORPG ^^.

