Netcat : communication client serveur

Fermé
fatma - 9 août 2012 à 14:10
 layn35 - 10 août 2012 à 15:23
Bonjour,



j'utilise unix pour la premiere foi ainsi que netcat et je veu faire communiquer 2 terminales en utilisant netcat : c a dire : communication sur le meme port
j'ai pu faire la communication entre 1 seul client et 1 seul serveur
mais je veu bien communiquer plusieurs clients avec un serveur
quelqun a une idee svp, nhesitez pas de m'aidez
je vous remercie enormement.

3 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
9 août 2012 à 19:12
Personnellement je n'ai rien compris (ni ce que tu voulais faire, ni comment tu comptais utiliser netcat). Je ne comprends pas ce que tu veux dire quand tu dis "je veux faire communiquer deux terminaux via une communication via le même port".

Peux-tu nous expliquer le problème de départ plus clairement, car j'ai l'impression que tu pars sur une fausse piste ?

Bonne chance
0
bonjour, après des recherches sur internet
j'ai compri que avec netcat : je peu transmettre des données entre client et serveur via socket, et c'est exactement ce que je veu faire.

j'ai trouvé des commandes qui me permettent la transmission des donnees entre un client et un serveur.
ce que je veu faire exactement : c'est : la transmission entre plusieurs clients et 1 serveur.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
Modifié par mamiemando le 10/08/2012 à 10:25
j'ai compris que avec netcat : je peux transmettre des données entre client et serveur via socket, et c'est exactement ce que je veu faire.

Oui enfin disons qu'en temps normal on dit surtout au serveur d'écouter sur un port (en ouvrant un socket) et ensuite on demande au client de se connecter sur l'ip du serveur et sur ce port. Le fait d'ouvrir cette connexion crée un socket côté client (sur un port qui n'a rien à voir avec le port utilisé côté serveur).

Déjà c'est plus clair car avant tu parlais de faire communiquer deux terminaux ce qui n'avait pas vraiment de sens et d'établir une communication sur un même port (ce qui en avait encore moins). or en réseau ce n'est pas du tout ce qui se passe (cf exemple ci dessous).

Exemple : A se connecte en ssh vers B. Le serveur ssh de B écoute sur le port 22. Voici ce que je vais voir :
- sur B :

(root@B) (~) # netstat -ntlp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante... 
...
tcp        0      0 0.0.0.0:22              0.0.0.0:*... 
tcp6       0      0 :::22                   :::*...
...


- sur A : (après avoir établi la connexion ssh)

(root@A) (~) # netstat -lapute  
Connexions Internet actives (serveurs et établies) 
Proto Recv-Q Send-Q Adresse locale          Adresse distante... 
... 
tcp        0      0 192.168.1.12:33081      B:ssh... 
...


Comme tu le vois,
- B écoute en IPv4 et IPv6 sur le port 22.
- A est connecté à B en IPv4 et utilise en local le port 33081 (d'ailleurs, A peut ainsi tout à fait avoir sa propre instance de serveur ssh qui tourne et qui écoute sur le port 22).

Je ne sais pas en quoi tu codes, ni ce que tu veux coder, mais à mon avis ce que tu cherches c'est comment établir une connexion entre deux processus. Et pour ça il faut que tu regardes comment on manipule des sockets dans le langage que tu utilises. netcat (nc) n'est qu'un outil qui permet de récupérer un flux réseau sous format texte (et réciproquement, émettre un fichier dans un flux réseau). C'est donc un moyen de faire communiquer deux processus, mais ce n'est a priori pas le plus naturel.

Bref... que veux-tu faire ?
0
De plus, une instance de netcat ne pourra accepter qu'un seul client.
Il relâche le port d'écoute après la première connexion client.
0