Pb réseau recv() + connection

Signaler
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
1
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
-
Salut,

J'ai téléchargé de nombreux tutoriaux sur les réseaux, les sniffers, les forgeurs de paquets etc, mais j'ai un petit problème:

Sniffer:
Sur mon ordinateur portable (assez récent), les sniffers fonctionnent.
Mais sur ma tour (plus vieille et équipée d'une carte réseau à 11€ de Montgallet) l'appel à recv() échoue alors que le bind() réussi.

Chat Client/Serveur
Depuis un même ordinateur, quand je lance des logiciels de chat en réseau, un pour le client, un pour le serveur, la connexion est établie et le chat fonctionne. "Normal, tu es sur le la même machine et aucune donnée ne transite par le réseau." me diriez-vous.
Oui mais lorsque je fais de même sur ma tour, celà ne fonctionne pas !

Donc bien évidement, il m'est impossible de communiquer avec ces logiciels entre le portable et la tour. IP respectives 1.1.204.98 et 1.1.204.97

Borgchat
Cependant avec le logiciel Borgchat, j'arrive à connecter les 2 ordinateurs, mais Borgchat met un certain temps (qq minutes) avant de reconnaître les 2 ordinateurs. Les messages transitent ensuite sans problèmes sur le réseau.
Windows aussi met qq temps avant de voir les 2 ordinateurs du même groupe de travail.

Sur la tour:
Bref, j'ai pensé qu'il fallait plusieurs tentatives de connection afin que celle-ci réussie, donc j'ai effectué des appels à recv() en boucle.
Mais le programme reste bloqué au 2ème appel et il est impossible de terminer le processus du programme. L'ordinateur fini par planter 5 minutes plus tard.

Bref, voici la liste de questions qui découlent du développement ci-dessus.
Quel est le problème de ma tour ?
Comment tester des connections (sachant que le bind() réussi) ?
Comment connecter en réseau 2 ordinateurs qui mettent du temps à se reconnaitre ?
Avez-vous eu déjà le même problème ? (on ne sait jamais)

Même si vous n'avez pas de réponses aux questions, je vous serez reconnaissant de me donner des informations que vous pensez que je n'ai pas; oui, il ne faut pas non plus que vous ayez lu tout ça pour rien !

Merci infiniment.

10 réponses

Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

une simple question pour commencer : c'est quoi tes environnements ?

Tout ça m'a l'air d'un problème de configuration réseau.

donnes plus d infos stp...

si c'est windows (regarde si tu as installé les protocoles tcp/ip(celui ci tu devrais l'avoir) et ipx .

tes adresses IP me paraissent particulières (prends les classiques :
192.168.0.* ou 193.51.103.*) c quoi ton masque de sous reseau ?

1.1.*.* je sais plus à quelle domaine ça fait référence.

a tte suite ;)
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Merci pour ta réponse,


Je suis sous Windows XP SP2.
Je programme avec VC++ 6.0.
Les IP sont particulières car elles sont compatibles avec le réseau de l'école (pour mes tests, je ne branche ensemble que mes 2 ordinateurs).
Le groupe de travail n'est pas MSHOME mais BIRSE.
Masque sous-réseau: 255.0.0.0.

Mais les IP sont correctes car le logiciel de chat Borgchat permet de communiquer entre les 2 PC. Les protocoles TCP/IP sont installés et l'IPX aussi.
Le must serait d'avoir accès aux sources de Borgchat mais son auteur ne les diffuse pas.

Le problème principal est que la tour n'arrive pas à lancer les sniffers les plus simples et n'est pas capable de communiquer avec elle-même via le réseau, ni avec le portable grâce aux logiciels de chat "basiques". Seul borgchat leur permet d'échanger des données.

Ah oui. Le sniffer du portable (qui fonctionne) reçoit beaucoup de données de la tour, des données pour tout le réseau (IPdest = 1.255.255.255). Il intercepte aussi les paquets envoyés par Borgchat.

J'espere que ces informations te satisfairont.

Merci encore !
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

je pense que je risque de donner ma langue au chat ;)

Le problème semblerai comme tu dis se situer au niveau de ta tour qui ne se voit pas et qui émet des messages broadcasts.

peut être un probleme de table de routage (mais je pense que tu as déja du regarder)

essaye quand meme de la vider et utilise la commande trace sous dos pour voir ce que fait ta tour

- t'as des firewalls ?



hum en espérant t'aider ;)
Messages postés
70
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
21 décembre 2005

c la commande route sous dos : sorry
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

Slt,

Pour ta tour, je pense que soit ta carte reseau deconne (regarde si tu
na pas une led orange ou rouge ki sallume sur ta carte reseau, ca
voudrai dir qu'il y a des conflits)

Tu na pa un firewall sur ta tour?

Tu arrive a allé sur internet avec ta tour?
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Merci pour vos réponses,



J'avais déjà essayé tous firewalls désactivés, toujours le même problème.

En plus j'ai plusieurs fois réinstallé la carte réseau tellement elle était lente à la détente.

J'ai acheté cette carte uniquement pour mettre en réseau le portable et
la tour, jamais pour surfer (et je n'ai pas eu l'ocassion d'essayer le
net).



Actuellement, je ne peux pas avoir accès à la tour (changement
(temporaire)° de ville oblige). Par contre, je vais essayer les
programmes sur d'autres couples d'ordinateurs pour voir si le problème
sur la tour est purement dû à la carte réseau (ou peut-être aux
programmes eux-mêmes mais ça m'étonnerait car les programmeurs de
cppfrance sont les meill... bon ok j'arrête :-) ).



Cependant, le logiciel Borgchat (oui, je sais encore lui) arrive à
faire transiter des messages de la tour au portable et vice versa, donc
réussi à établir une connection.

En tous cas la carte réseau de la tour fonctionne (mal certes mais fonctionne).



Comment se fait-il qu'on ne puisse pas essayer plusieurs fois la fonction recv() ?

En fait si la première tentative échoue (-1 returned) la seconde bloque
l'ordinateur (sans pour autant monopoliser le processeur).



Je vais continuer de chercher de la doc sur les réseaux pour quitter le
statut de newbie dans le domaine (j'ai quand même dû chercher sur le
net la définition de certains de vos mots ).





Merci et @+



Guillaume
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

si la focntion recv() retourne -1, tu devrai faire un
WSAGetLasError() qui va te retourner le numero d'erreur
coresspondante!! une fois que tu l'a tu regarde dans l'msdn pour savoir
quesque c'est comme erreur.

Pour ce qui est de ton recv() qui suit, c normal que ca bloque, car
c'est fonction bloquante lol. elle attend de recevoir quelque chose, et
quand elle atten a n'a nullement besoin du proc. c'est pour ca que ca
le monopolise pas
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Je n'ai plus accès à la tour actuellement mais je suis presque sûr que le numéro d'erreur est le 10061; et dans MSDN:



WSAECONNREFUSED

10061

* Connection refused. : No connection could be made because the target computer actively
refused it. This usually results from trying to connect to a service
that is inactive on the foreign host—that is, one with no server
application running.

Bref, le problème vient très très certainement de la carte.



La fonction recv() est une fonction bloquante...

Le recv() en question est dans un sniffer on ne peut plus simple:

Si elle reussi, on peut l'appeler une autre fois et ainsi lister tous
les paquets IP qui passent par le réseau, par contre, si elle échoue,
un second appel bloque le programme.



Comment faire, dans le cas ou elle échoue, une autre tentative de
connection ? car dans le cas de la carte de la tour, il faut sans doute
l'essayer en boucle pour recevoir (enfin) un paquet.



Merci
Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

"No connection could be made because the target computer actively
refused it. This usually results from trying to connect to a service
that is inactive on the foreign host—that is, one with no server
application running."



Ca veu dire que c'est ton portable qui a refuser que ta tour se connecte. peu etre du a ton parfeu du portable.

pour ce ki est du sniffer, j'en c rien...
Messages postés
1
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
18 avril 2005

J'ai pas tout compris a ton probléme ( arretes de "sniffer" )

Mais bon fais voir la partie de ton code qui créé et configure le socket :
- socket()
j'usquau
- bind()

Fait voir egalement la partie qui se mets en attente sur le port

- listen()
j'usqu'au
- recv()