Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[SockeT][Débutant] Les bases de SockeT
Auteur Message
Répondre en citant
Message [SockeT][Débutant] Les bases de SockeT 
Bonjour,

Si vous êtes ici, c'est qui vous vous demandez comment utiliser cette fameuse commande, en effet, c'est bien la commande SockeT.
Citation:
ça sert à quoi cette commande ?
http://batch.xoo.it/t4866-BETA-C-SockeT-TCP-en-batch-TSnake41.htm a écrit:
La commande SockeT permet de gérer des "Socket" TCP/IP ce qui peut permettre de se connecter a un serveur ou d'en héberger un.
Pour information, le TCP est extrêmement utilisé dans le Web, les jeux...
Cela donne des avantages aux niveau de la sécurité car aucun mot de passe aura besoin d'être stocké sur le batch mais une IP et un Port.
Citation:
Oulala ! J'y comprends absolument rien
C'est vrai que la programmation réseau, ça n'a jamais été simple.

En informatique, on transporte les données par le câble Ethernet (le câble qu'il y a derrière vos PC, généralement, on le reconnais grâce à sa force et parfois par ses 2 diodes, regardez ici et vous comprenderez de quoi je parle).
Cependant, il faut trouver un moyen de les grouper et les dégrouper et d'envoyer les données à un PC spécifique.
Dans cette première couche (qui est la couche réseau), il y a l'IP globalement
Maintenant que l'on sait envoyer les données à un PC, il faut trouver un moyen de les départager entre les sockets (sortes de tuyaux où passent les données).
Cette couche se nomme la couche de transport, elle permet de transporter les données vers un PC et un socket particulier
Il y a par exemple sur cette couche le TCP (sur lequel on va travailler), l'UDP et le SCTP
Maintenant, on peut envoyer ce que l'on a besoin mais on a besoin d'un format (dite couche application) pour que les données soient bien traitées.
On peut citer HTTP, HTTPS, Gopher, SMTP, SNMP, FTP, Telnet, NFS et encore pleins d'autres.
Citation:
Pourquoi ne pas prendre un format au lieu de directement passer par du TCP ?
Il y en a des tonnes, à vrai dire, difficile de tous les implémenter, et en prendre que certains, leur usage sera trop limité (par exemple, comment bien gérer le FTP si l'on ne peut pas définir de nom de fichier ?).
Cependant, il y en aura certains que je vais mettre, en particulier ceux qui s'adaptent bien à l'usage de SockeT.
Voila un schéma simple de ce qui s'appelle la couche OSI

nous on va travailler sur la couche transport, donc on pourra utiliser la couche Applications


Maintenant que je vous ai expliqué ce qu'est un Socket, le TCP, etc., il vous faut cette commande (bien sûr), vous pouvez trouver le lien dans http://batch.xoo.it/t4866-BETA-C-SockeT-TCP-en-batch-TSnake41.htm
Ou bien là si vous avez la paresse de chercher le lien Razz : https://onedrive.live.com/?authkey=!ABjdylkp7FbbLZU&id=B1377D14589EB88E…
Oui, il n'y a pas d’erreur, il n'y a que le code source mais pas de panique, je vais vous expliquer.

SockeT à bien changé depuis son début, son fonctionnement même à été réécrit, sa syntaxe améliorée, mais surtout : c'est maintenant modulaire.
Citation:
Hein, et ça nous avance à quoi ?
Et bien, vous pouviez maintenant avoir un SockeT.exe adapté à la situation, ça permet d'économiser la place sur le disque dur et aussi gagner en vitesse.
Citation:
Et on s'en sert comment de ces modules
Et bien, c'est tout simple, comme bonjour.



- I Compilation de SockeT

Tout d'abord, vous allez extraire le .7z (si vous ne l'avais pas déjà fait).
Vous pouvez prendre 7-Zip (ou p7zip si vous êtes sur linux) disponible ici : http://www.7-zip.org/
Puis vous allez dedans
Citation:
J'y comprends rien à ce code source, en quoi ça m'avance ?
Et bien vous avez le code source et vous ne pouvez pas me soupçonner de distribution de virus ou de malware.
Vous pouviez donc comment marche SockeT et même le modifier si vous l'avez envie.
Citation:

Rien à faire du code source, je veux mon .exe !
Regardez dans build_scripts, vous allez y trouver un grand nombre de .bat.
Ces .bat permettent de compiler SockeT mais avec différents lots de modules sauf un où l'on entre la liste des modules.

Le "code" détaillé de ces fichiers est présent dans lisezmoi.txt à la racine du dossier
lisezmoi.txt a écrit:

- Principal
+ client : Version avec uniquement le client
+ server : Version avec uniquement le serveur
+ full : Version contenant le client et le serveur

- Secondaire :
+ debug : Version produisant un log
+ min : Version minimaliste ne contenant pas d'aide, et le TCP uniquement

- Autres
+ custom : Version personnalisable
Citation:

Si j'ai bien compris, si je veux une version serveur, je prends ceux avec server, si je veux une version client, je prends ceux avec client et pour le client et le serveur, ceux avec full.
Mais, à quoi servent debug et min ?
La version debug et min sont des versions spéciales, la version debug émet un log (SockeT.log) et la version min ne contient pas d'aide et se limite au TCP, pour le moment, on va prendre les versions normales.
Ces versions sont utiles dans certains cas mais très complexes à utiliser, mais nous allons nous contentez de la version complète simple.
Démarrez build_full.bat et allez ensuite chercher votre .exe dans bin.



- II Utilisation en ligne de commande
Maintenant que l'on a notre .exe, il nous faut savoir l'utiliser.
Le plus simple (avec la version normale) et de faire :
Code:
SockeT.exe
Ce qui affichera donc l'aide
SockeT.exe a écrit:
SockeT.exe by Astie Teddy
Usage : SockeT -property:value [...]

Primary properties :
m : Module to use (client/server)
host : listening/connecting ip address
port : binding port / connecting port

Installed modules :
HELP
SERVER
CLIENT
TCP
NMS
Citation:

J'y comprend rien du tout Sad
Pas de panique, c'est tout simple.
SockeT utilise un système de paramètres par propriétés un peu comme msbuild/xbuild.
C'est à dire : -propriété:valeur
Citation:

Et quels sont ces propriétés ?
Ces propriétés sont :
    m = module = module à utiliser (client, server)host = l'adresse IP d'écoute ou auquel se connecterport = port d'écoute ou auquel se connecter


Il y en a aussi d'autres qui ne sont pas marquées dans l'aide :
    waitdelay = délai global, plus cette valeur est faible, plus SockeT sera rapide mais consommera en conséquent plus de CPUmaxclients = Limite maximale de clients connectées en même temps (serveur seulement)protocol = Protocole à utiliser (pour le moment, TCP et NMS sont les seuls choix)


Un exemple de ligne de commande :
Code:

SockeT.exe -m:client -host:127.0.0.1 -port:25565 -protocol:tcp -waitdelay:200
Démarre SockeT en mode client vers 127.0.0.1:25565 (serveur minecraft globalement) avec comme protocole tcp et comme délai global 200ms.

Citation:

Si j'ai bien compris, pour démarrer un serveur, il faut que je fasse
Code:

SockeT.exe -m:server -host:127.0.0.1 -port:25565 -protocol:tcp -waitdelay:50

C'est ça mais une petite information, si on met 127.0.0.1 en IP pour le serveur, on pourra uniquement se connecter en utilisant cette IP (127.0.0.1), mais pas l'IP LAN ou hamachi (ou autre).
C'est pour cela qu'il existe une IP spéciale acceptant la connexion de toutes les IP : 0.0.0.0.

Ensuite, dans cette aide, il y a la liste des modules d'installées, cela peut permettre de savoir quels modules possèdent SockeT.exe.


- III Bases de SockeT
Maintenant que l'on sait démarrer un serveur et un client, on peut démarrer un client et un serveur mais comment envoyer et recevoir des données.
PS : Pour utiliser le client, il faut forcément un serveur actif, sinon la connexion échoue (plus précisément un Socket en écoute, il y en a plus que l'on le pense (Minecraft, Apache HTTP, Lighttpd, Pure-FTPd, passent par des Sockets TCP))

On va maintenant voir ce que veut dire TCP et NMS (tiré de TXCobalt, surcouche du TCP).
Sur ces deux protocoles, le fonctionnement est le même mais pas la façon de transmettre les données, à vrai dire, le TCP est standard, et utilisé partout alors que le NMS est surtout adapté pour les jeux avec SockeT (ou non).

Voila un petit tableau comparatif :

ça peut faire peur mais en réalité, c'est assez simple :
Le NMS est une "légère" amélioration du TCP exclusivement pour les jeux en garantissant que les données soit triées sous forme de messages.
Le TCP peut tout de même être utilisé, il est requis dans le cas où l'on veut travailler avec des standard comme le Web, certains serveurs etc. ou encore gérer des gros fichiers (le NMS est limité à ~64ko)
On va même travailler avec celui là même si on aurait pu le faire avec le NMS.

Tout d'abord, on va faire un serveur pour notre petit programme de test
Code:
@Echo off
start /b SockeT.exe -m:server -host:0.0.0.0 -port:50 -protocol:tcp -waitdelay:50
Ce serveur est très basique mais fera l'affaire.
En exécutant ce programme, on remarque qu'il y a le fichier Session et le dossier SockeT.
Le fichier Session permet de dire que SockeT est démarré, si on le supprime, SockeT s'arrête.
Le dossier SockeT est propre au serveur, c'est dans ce dossier que l'on va recevoir les connections des clients et les données (bien sûr).

Maintenant, on va démarrer un client avec ce code là (je vous conseille de démarrer ce client dans un autre dossier que le serveur, ça évitera les soucis avec le fichier Session).
Code:
@Echo off
start /b SockeT.exe -m:client -host:127.0.0.1 -port:50 -protocol:tcp -waitdelay:50
pause
Et tada !
Citation:
Je comprends pas, il ne se passe rien dans les consoles
C'est normal, on n'envoie pas de données, cependant, dans le dossier SockeT du serveur, on peut remarquer la présence d'un fichier

Ce fichier veut dire qu'il y a un client avec comme IP 127.0.0.1 et comme port (distant) 57094 (cette valeur varie dans ce test)
Citation:
Et comment on fait pour envoyer des données ?
Et bien, c'est ce fichier_IN qui permet d'envoyer des données.
Par exemple avec cmd dans le dossier SockeT du serveur
Code:
echo Salut>votre fichier_IN
Dans mon cas
Code:
echo Salut>127.0.0.1$57094_IN


Si vous regardez dans OUT chez le client, vous allez trouver votre "Salut" que vous avez marqué dans le _IN vu avant.
Bien sûr, cela marche aussi si vous envoyez "Salut" jusqu'au bout du monde.
PS : Cela correspond au paquet reçu.

Citation:
Et pour le client, ça se passe comment ?
Et bien le client possède son propre _OUT et _IN, c'est OUT et IN tout simplement.

Pour résumer :
- Server : dans SockeT, chaque connection à son fichier avec son IP et il est possible d'utiliser les fichiers IP$Port_IN et IP$Port_OUT.
- Client : les fichiers IP$Port_IN et IP$Port_OUT sont remplacées par IN et OUT.
- On envoie les données dans IN et on les reçois dans OUT.

Citation:
Donc si je met Salut dans "IN" du client, le serveur recevra donc mon Salut dans le _OUT de l'IP
C'est ça, je vais tout résumer en un schéma :

IN Client 1 = IP$Port_IN du serveur
OUT Client 1 = IP$Port_OUT du serveur

IN = IN du client
OUT = OUT du client

Pour le moment, c'est la fin de ce tutoriel sur SockeT, vous avez dû déjà en apprendre gros sur cette commande.
Si vous voulez plus de choses, vous pouviez voir la page de la commande SockeT, avec quelques exemples, mon morpion réseau (simple) et mon serveur web en batch ((très) avancé)




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [SockeT][Débutant] Les bases de SockeT 
Tutoriel Complet et compréhensible ! enfin, pour moi sa va Rolling Eyes

Excellent ! Okay



Message [SockeT][Débutant] Les bases de SockeT 


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