_________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.17] _|_| API WINSOCKS \_________/_/ So CalleD _ ______ __ _ _ API WINSOCKS _/_/[By:Nitrogen] \ __________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Disclaim: --------- Mouahhahaha, désolé j'aimerais bin écrire un disclaim, mais mon article ne ce situe dans l'illégal, mais plutot sur la programmation. Parce que je crois qu'un hacker qui ne sais pas coder est un peu mal prit... Je profite de ce disclaim pour faire une petite intro. Je ne suis pas un expert en programmation, mais je suis assez experimenté pour vous dire que Visual Basic est plus pour debuter en programmation. Si vous voulez faire de vrai application n'ésitez pas, le C/C++ est pour vous. Cet article est destiné aux personnes ayant une certaine connaissance de Visual Basic, si vous n'avez jamais coder ce language passez à l'article suivant. Article: -------- Bon bien c'est ici que ca commence. Je vais toucher l'API de windows et au control winsock. _____ ________ ________________ ____________ ________ _________________ / \ | Informations | \____________ ___________ __________________ _____________ _____ _________/ | | | 1.0 Et bien... Qu'est ce que l'API de windows ?!?! | | | | API=Application Programming Interface. Ca sert a appeler | | des fonctions windows du style: Faire jouer du son, | | Reboot, Replacer le curseur(souris), etc... Ca facilite | | complètement la tâche d'un programmeur. Sans l'api coder | | un programme serais très ardus. | | (Pas pour tout les applications naturèlement) | | | | 1.1 C'est l'fun mais comment l'utiliser? | | | | Bin avez-vous jamais vu Api Text Viewer dans votre menu de | | Vb?C'est ca.. Jettez-y un coup d'oeil c'est fascinant... | | | | 1.2 Le control Winsock? | | | | Oui, le control winsock permet de faire des applications du | | style Client/Server. | | | | Pour ajouter le control winsock rien de plus facile allez | | dans le menu Project/Components(CTRL+T) et voila ajouter --> | | +++ Microsoft Winsock Control 5.0 +++ | \____________ ________________ ______ __________ _______________ _________/ ___ _______ _______ _____ / \ | API | \________ ____________ ____/ Bon ouvrez Api Text Viewer, il n'y à rien. Allez dans File/Load text file et ouvrez Win32api.txt. Maintenant dans la Combo box (Api Type) choisissez Declares. Il y à plusieurs items qui apparaissent, voici des call de Dll deja fait. Rendez vous jusqu'à "SetCursorPos" Dclicker dessus, en bas apparait le call ou plutot le code a inserer dans un module. Commencez-vous a comprendre? Selectionner ce texte, et copy.. Maintenant nous allons faire un exemple avec ce call, biensur cet exemple n'aura aucun autre intérêt que vous faire comprendre comment utiliser un call de dll. *Faites vous une form --> Frm_Main *Inserez 2 boutons --> Cmd_Oui Cmd_Non (un avec une caption "Oui" et l'autre "Non" *Inserez un module --> Project/Add module --> Mod_1 -Maintenant inserez le call de Dll que vous avez copié dans l'api le voici: Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long Decortiquons ce code: *Declare--> declare une methode *Function--> precise que cette methode est FUNCTION *SetCursorPos--> Le nom de notre function *Lib--> indique la librairie que nous allons utiliser(ou plutot le dll) *"user32"--> le dll *Alias--> indique le nom utiliser pour appeler notre fonction dans un code *"SetCursorPos"->le nom que nous allon utiliser *(ByVal x As Long, ByVal y As Long) --> les coordonnees (X,Y) *As Long--> le type de la function Alors il vous reste juste a mettre du code dans le bouton. Disons que nous voulons que la personne ne puisse pas clicker sur le bouton NON alors: Private Sub Cmd_Non_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) X = 200 Y = 200 SetCursorPos X, Y End Sub Tout simplement, nous avons attribué les coordonnées du curseur dans l'événement MouseMove, ce qui signifie que quand la souris bouge sur le bouton elle active le sub, et déplace le curseur avec la fonction SetCursorPos.. Voici ce que l'Api peut nous apporter et nous rendre la tâche facile... biensur ceci n'est qu'un banale exemple de ce que l'Api nous offre! Il n'est pas interdit d'explorer soi-même.... Amusez-vous bin avec ca... _____ __________ ___ ____ / \ | Winsock | \___ _____ ___________ __/ Cette partie est légerement plus longue du fait que ce n'est pas si facile que la partie précédante, malgrés que le control winsock n'est pas complexe. Ouvrez un projet Vb et ajoutez un control Winsock de la maniere expliquer en 1.2 Pour un Client mettez-vous un Bouton Connecter Deconnecter --> Cmd_Connecter--> Cmd_Deconnecter(caption "Connecter" et "Deconnecter") Dans le bouton de connection vous devez entrer le Port Host Protocol comme ceci : Objet.RemoteHost=Host Objet.RemotePort=Port Objet.Protocol=sckTCPProtocol Objet.Connect On pourrais remplacer l'objet par notre contrôle winsock, nommé par défault "Winsock1". Ce léger code nous permet de nous connecter a un serveur. Mais ceci est totalement facile. La seul embiguité c'est les structures des packets. C'estbeau d'être connecter, mais il faut envoyer et recevoir des données. Alors allez dans l'événement DataArrival du control winsock.Insérez ceci : Dim Donner as string Winsock1.GetData Donner, VbString, BytesTotal La méthode GetData recoit le packet et l'insert dans la variable Donner qui est de type VbString(String) avec sa longueur(BytesTotal). Ceci vous permet de trier ce qui va arriver. Disons que le packet envoyé et insérer dans Donner serait "Disconnect" alors: if (Donner = "Disconnect") then Winsock1.Close:MsgBox("Connection perdu",VbInformation+VbOkOnly,"Déconnecter") Interpretons cette ligne. Si le packet est égal a "Disconnect" alors fermer la connection a l'aide de Winsock1.Close et aviser l'utilisateur a l'aide d'une boite de dialogue. Il ne vous restes plus qu'à envoyer des packets et tout sera ok. Rien de plus simple: Winsock1.SendData "Disconnect" Et voilà vous venez d'envoyer un packet "Disconnect". Maintenant pour un serveur, c'est relativement simple. Tout ce qui reste a savoir c'est comment coder un programme qui attend un request de connection. Winsock1.Protocol=sckTCPProtocol Winsock1.LocalPort=666 Winsock1.Listen Nous avons mis le protocol Tcp, le port ecoutant les connections est 666 et en fin de compte on dit d'attendre une connection. Pour savoir si une connection est demander, l'événement ConnectionRequest du control Winsock s'en occupe: if (Winsock1.State <> sckClosed) then Winsock1.Close Winsock1.Accept RequestId Donc si le socket n'est pas fermer Vb le ferme, ensuite accept la connection. CONCLUSION: Je crois que vous en savez suffisament pour découvrir maintenant par vous même...