CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Eclaircissement sur les sockets

Encastrement
Encastrement
Niveau 6
24 novembre 2012 à 13:03:56

Salut les amis,

Je commence la programmation réseau (enfin, je devrais) en C et comme je n'ai aucune base préalable à propos des réseaux et des sockets, j'éprouve quelques difficultés.

Pour me dégrossir, j'ai téléchargé le code C d'un programme "simple" : un fichier client.c, un fichier serveur.c, et le but est de copier un fichier qui, si j'en crois mon déchiffrement du code (qui n'a pas été commenté par le prof...) sera donné par le serveur au client.

Je suis sous Linux. J'ouvre un terminal dans lequel je fais tourner le serveur. À ce moment, je dois indiquer un port en argument du programme : mais je n'ai aucune idée de quoi mettre ! J'imagine que je ne peux pas mettre un nombre au bol, genre 0, 1, 12. Comment avoir un numero de port adequat sur lequel ancrer le serveur ?

Mais passons : je met un grand numero au hasard, genre 10200, et le serveur semble tourner plus ou moins correctement et se met en attente de connexion de clients.

Ensuite j'ouvre un autre terminal ou je fais tourner le programme client. Cette fois, je dois non-seulement indiquer un port (dois-je indiquer celui du serveur ou bien rien à voir? ), mais encore je dois donner un "host". Est-ce une adresse IP ? Comment savoir ce que je dois mettre ? Quand je tape hostname dans la console j'obtiens <monlogin>-<nom de mon pc>, si je tape hostname -i j'obtiens ce qui semble être une IP (127.0.1.1), et si je tape hostname -I j'en obtiens une autre : 192.168.10.etc..

J'ai essayé diverses combinaisons mais le serveur reste bloqué sur "en attente de connexions".

Si vous voulez le code, je peux le mettre, même si le problème vient de moi et pas du code (le code a été écrit par mon prof et le programme a déjà été testé).

Merci d'avance

Pseudo supprimé
Pseudo supprimé 24 novembre 2012 à 13:06:56

http://fr.wikipedia.org/wiki/Localhost

Encastrement
Encastrement
Niveau 6
24 novembre 2012 à 14:59:42

Merci.
Mais je n'ai toujours pas résolu mon problème.

En fait, voici le bout de code où intervient le problème :

http://wall.deblan.fr/x1576/c/1/

Dans la console, le programme reste bloqué sur "Waiting for incoming connexions", quand bien même mon client semble bien lancé (avec comme argument host 127.0.0.1 et le port du serveur).

Si jamais, le serveurSock est déclaré et initialisé (au port 8080 par exemple) avec cette fonction :
http://wall.deblan.fr/x1575/c/1/

tbop2
tbop2
Niveau 10
24 novembre 2012 à 15:39:06

Tout à fait un client nécessite l'adresse et le port de connexion au serveur pour se connecter. Par analogie c'est un peu la même chose que pour se déplacer en ville il te faut le nom de la rue (l'host) et le numéro de rue (le port).

Tu ne peux pas configurer ton serveur comme écoutant sur le port 1 et espérer qu'un client qui demande à hostname kicékiya sur le port 8080 de fonctionner. Les deux doivent matcher.

Pour faire court un réseau le localhost est ton addresse locale, toujours valable que tu sois connecté ou pas à un réseau plus grand, par convention celle-ci est 127.0.0.1. C'est le border-case pour un terminal non connecté mais ui doit effectivement pouvoir accéder à un de ses ports réseau. Quand ton ordinateur fait partie d'un réseau il obtient alors une seconde addresse ip qui correspond à l'adresse qui lui a été attribuée pour un routeur distant.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment