ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 août 2008
-
22 oct. 2006 à 19:15
ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 août 2008
-
28 oct. 2006 à 00:43
Hello à tous !!
Voilà, il me semble que j'avais posté, je sais plus ( je retrouve plus le poste )...
Donc là je fais une belle petite classe ( enfin tout les fonctions pour que ca marche ) FTP.
Le but est simple : inclure un fichier ftp.h et ftp.c et pouvoir faire tout ce que l'on veux.
Le soucis, c'est que en mode Actif, c'est donc à moi de dire au serveur
où se connecter. Pour celà, je doit lui donner un port coupé en deux (
Partie 1 : Port/256, Partie 2 : Port%256 ), et juste avant l'adresse ip
de ma carte réseau.
Donc moi mon problème est pour récupéré l'adresse de la carte réseau... Je me suis inspiré de ce site mais je me retrouve avec mon adresse de rebouclage... ( 127.0.0.1 )
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 27 oct. 2006 à 23:55
Salut,
D'accord, j'avais compris que le probleme c'etait de recevoir la
connexion. Pour avoir l'ip, je pense que le mieux est de faire un
getsockname() sur le socket que tu utilises pour la connexion de
controle (socket que tu as connecté sur le port 21 du serveur).
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 22 oct. 2006 à 19:22
Salut,
En général, quand on fait un serveur on ne se bind pas sur une carte
reseau explicitement, mais sur toutes les interfaces disponibles, en
utilisant l'adresse INADDR_ANY lors du bind().
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 23 oct. 2006 à 22:05
Salut,
Quand tu appeles bind(), il faut utiliser l'adresse ip locale
INADDR_ANY, comme ca ton socket sera bindé sur toutes les interfaces
locales disponibles.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 27 oct. 2006 à 23:19
Salut,
Ce dont je te parle sert à recevoir la connexion du serveur, pas a trouver ton adresse locale.
Une fois que tu as fait ton bind() (et non blind...) sur INADDR_ANY, tu
peux passer ton socket en mode ecoute avec listen() et ensuite, tu peux
appeler accept() pour recevoir la connexion de ton serveur. Au passage,
il faut choisir un autre port que 0 pour se binder.