Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Prog] SkyChat
Auteur Message
Répondre en citant
Message [Prog] SkyChat 
Bonjour,

Je vous présente un programme que j'avais créé il y a quelques mois. Je voulais l'améliorer mais je n'ai pas eu le temps Embarassed . SkyChat est un petit programme très léger pour chatter en local (donc il faut le mettre sur 2 PC au minimum). Il utilise le protocole UDP pour envoyer les message cryptés en broadcast (donc sur tout le réseau local). Le port 54321 doit être libre et autorisé pour utiliser ce chat.

Voilà pour le code source :

Code:

#cs
   Programmeur : Sablier94
   Date de dernière mise à jour : 29.01.2012
   Remarque : Le port 54321 doit être libre et autorisé pour utiliser ce chat local.
#ce

#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <GuiEdit.au3> ;Pour les styles de l'edit
#include <ButtonConstants.au3>
#include <Misc.au3> ;Pour détécter l'apui de la touche "Enter"
#Include <String.au3>

Const $Port = 54321, $User32dll = DllOpen("user32.dll") ;On définit le port et la dll utilisé pour pouvoir envoyer un message avec "Enter"
Const $BroadcastIP = StringLeft(@IPAddress1, StringInStr(@IPAddress1, ".", 0, 3)) & "255" ;Définit l'adresse de broadcast

Global $Username = @UserName ;On définirt le pseudo par défaut avec le nom de session de l'utilisateur

OnAutoItExitRegister("ExitChat") ;On va regarder quand l'utilisateur veut quitter le script pour éteindre correctement UDP
HotKeySet("{Esc}", "_Exit") ;On va quitter si l'utilisateur appuie sur "Escape"

#Region ### START Koda GUI section ###
$FormSkyChat = GUICreate("SkyChat", 330, 415)
GUISetBkColor(0x408080)
$TextToSend = GUICtrlCreateInput("", 0, 384, 225, 21)
$Send = GUICtrlCreateButton("Envoyer", 232, 383, 97, 25, 0)
$ChatEdit = GUICtrlCreateEdit("", 0, 0, 329, 377, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlSetLimit($TextToSend, 128)
GUICtrlSetBkColor(-1, 0xC9EDEF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Do
   $Username = InputBox("SkyChat", "Veuillez indiquer votre pseudo :", $Username, "", "", 130) ;On demande le pseudo à utiliser
   If @error = 1 Then Exit ;On ferme le programme si l'utilisateur clique sur la croix
   If $Username = "" Then MsgBox(16, "SkyChat", "Vous devez entrer un pseudo.") ;On affiche un message d'erreur
Until $Username <> "" ;On continue tant que l'utilisateur n'a pas entré de mot de passe

UDPStartup() ;On démarre UDP
$Socket = UDPBind(@IPAddress1, $Port) ;Lie un socket sur le port d'écoute
If @error <> 0 Then ;Si le port est déjà utilisé :
   MsgBox(16, "SkyChat", "Erreur, le port " & $Port & " est déjà utilisé. Veuillez le libérer et relancer le programme !") ;On affiche une erreur
   Exit ;On ferme le programme
EndIf
SendTextMessage($Username & " s'est connecté sur le chat !") ;On affiche un message de connexion

While 1 ;Boucle infinie
   $GetSocket = _StringEncrypt(0, UDPRecv($Socket, 2024), "Sky");On décrypte le message
   If $GetSocket <> "" Then ;S'il y a un message reçu :
      DisplayMessage($GetSocket) ;On affiche le message
   EndIf
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ;Si l'utilisateur clique sur la croix
         Exit ;On ferme le programme
      Case $Send ;Si le bouton d'envoi est pressé :
         If GUICtrlRead($TextToSend) <> "" Then ;On lit l'input et regarde s'il n'est pas vide :
            SendTextMessage(@CRLF & "<" & $Username & "> " & GUICtrlRead($TextToSend)) ;On construit et envoie le message
            GUICtrlSetData($TextToSend, "") ;On efface le contenu de l'input
         EndIf
   EndSwitch
   If _IsPressed("0D", $User32dll) Then ;Si la touche "Enter est pressée" :
      If GUICtrlRead($TextToSend) <> "" Then ;On lit l'input et regarde s'il n'est pas vide :
         SendTextMessage(@CRLF & "<" & $Username & "> " & GUICtrlRead($TextToSend)) ;On construit et envoie le message
         GUICtrlSetData($TextToSend, "") ;On efface le contenu de l'input
      EndIf
   EndIf
WEnd ;Boucle infinie

Func SendTextMessage($MessageToSend)
   $SendSocket = UDPOpen($BroadcastIP, $Port) ;On ouvre le socket UDP
   If @error = 0 Then UDPSend($SendSocket, _StringEncrypt(1, $MessageToSend, "Sky"));On envoie le message crypté
   UDPCloseSocket($SendSocket) ;On ferme le socket UDP
EndFunc   ;==>SendTextMessage

Func DisplayMessage($MessageToSend)
   _GUICtrlEdit_AppendText($ChatEdit, $MessageToSend) ;On affiche le message désiré
EndFunc   ;==>DisplayMessage

Func _Exit()
   Exit ;On ferme le programme
EndFunc   ;==>_Exit

Func ExitChat()
   SendTextMessage(@CRLF & $Username & " s'est déconnecté !") ;On affiche un message de déconnexion
   UDPShutdown() ;On éteint UDP
EndFunc   ;==>ExitChat





______________________________________________________
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: [Prog] SkyChat 
Hello,

Je cours étudier ton code de suite!

Sa fait vraiment longtemps que j'ai envie d'apprendre comment utiliser une socket (si je ne me trompe pas) en autoit Mr. Green

Merci beaucoup,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Message [Prog] SkyChat 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch