|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
Bonjour,
Je développe actuellement un serveur en C via une machine virtuelle dans laquelle est installé une version de linux debian. Voici une partie du code de mon serveur : Code :
J'ai regardé les ports en mode listen et mon port 8001 est bien dedans. Coté client désormais : Code :
Et j'ai une erreur à la connexion du client : Aucune connexion n'a pu etre établie car l'ordinateur cible l'a expressement refusée. Mon soucis principal (avant de penser à des problèmes de code) est le suivant : Sur quelle adresse IP mon client doit-il se connecter ? (celle qui est associée à la carte réseau de VirtualBox sous Windows 192.168.56.1, celle associée à ma carte wifi sous windows, celle associée à localhost sous linux : 127.0.0.1 etc). Dans tous les cas le serveur ne rentre jamais dans la boucle. Quand je serais sur de l'adresse ip à utiliser j'aurais peut etre plus de chances de trouver le problème de mon code. Pour info j'ai essayé de me connecter sans le client (telnet 192.168.56.1 8001 depuis windows) et cela ne fonctionne pas non plus. D'ou peu venir le soucis ? (Je suis sous windows 8) : Impossible d'ouvrir une connexion à l'hote. J'ai désactivé le pare feu de windows et désactivé avast sans succès. Cependant j'ai fais telnet 0.0.0.0:8001 depuis linux (dans la virtualbox) et ça fonctionne (en tout cas le serveur détecte la connexion). Donc le problème est la synchro entre ma machine virtuelle et mon windows. Le problème serait donc un soucis de configuration de virtualbox non ? J'ai essayé le mode bridged ajouté au mode NAT (comme indiqué sur internet) mais sans succès particulier... J'ai toujours 0.0.0.0:8001 comme adresse utilisée quand je fais netstat -ntulp, normal ? Merci d'avance, |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 026 ![]() |
Citation:
Citation:
est ce que l'on peut avoir les résultats de "ipconfig /all" sur ton PC et le "ifconfig -a" sur ta virtual box est ce que depuis ton PC, tu peux pinguer ta machine virtuelle. Tant que ce test ne passera pas, pas la peine de se plonger dans le code. Quelle type d'interface réseau tu utilises pour ta machine virtuelle :
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
||
|
|
00
|
|
|
#3 | ||||||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
Bonjour,
Merci pour votre réponse. Voici le résultat de ipconfig /all Code :
Code :
Code :
Pour l'interface réseau de la VM j'ai : le n1 en NAT et le second en host only. Pouvez m'indiquer lequel mettre plutot (j'en ai essayé plusieurs sans soucis) ![]()
|
||||||
|
|
00
|
|
|
#4 | ||||
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 026 ![]() |
OK, je pense avoir compris
entre ton PC et ta VM, il y a un réseau virtuel. Ce réseau est 192.168.56.0/24. Sur ce réseau, on trouve 2 machines : Code :
Code :
Si tu as une conf par défaut, je pense que l'adresse 192.168.56.101 est une adresse attribuée par le serveur DHCP virtuel 192.168.56.1. Cela reste à confirmer. Ceci dit, de ton pc, tu dois pouvoir pinguer 192.168.56.101 qui est l'adresse de ta VM (à moins qu'elle ne change si adresse attribuée par DHCP) et depuis ta VM, tu dois pouvoir pinguer ton PC (au firewall et iptables près).
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
||||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
Bonjour
Merci pour votre réponse, En mettant telnet 192.168.56.101 8001 j'arrive à me connecter depuis windows sur le serveur. Maintenant il me reste à analyser le code qui ne fonctionne qu'à moitié visiblement. De plus, il n'écrit pas "nouveau client détecté" pourquoi ? Alors qu'il passe dessus. Enfin mon soucis actuel est que mon appli reçoit (ou telnet envoie) envoie un message à mon serveur à chaque fois que je tape un caractère, comment taper des lignes qu'il n'envoie que lorsque je tape sur entrée ? (Parce que du coup mon Dispatcher est assez inefficace Faut-il faire un exemple comme celui-ci : http://stackoverflow.com/questions/6...newline-occurs ? Boucler jusqu'à détecter le caractère de fin ? çe me paraitrait bien mais en C# j'envoie un char[] via send, du coup ça me perturbe un peu, il faudrait que je rajoute le caractère de fin en C# aussi ? |
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 026 ![]() |
Citation:
Il va te falloir trouver un autre client TCP qui se comporte comme tu le souhaites (je n'ai pas d'idée en tête).
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
En effet c'est lié à telnet, mon client C# envoie des messages sans soucis, j'ai désormais un échange entre le serveur et le client fonctionnel.
Merci beaucoup ! Je finis mon appli (et donc corrige les derniers bugs) et revient mettre le sujet en corrigé si je n'ai pas de soucis |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 026 ![]() |
Prétentieux
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
|
|
00
|
|
|
#9 | ||||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
Oui :p mais voilà j'ai un gros soucis qui arrive lors des tests.
Dans mon dispatcher sur le client, il arrive que les commandes soient toutes collées dans la meme commande (le serveur envoie par exemple "abc" puis plus tard "def" et il arrive que mon client ne lise que "abcdef" ce qui fait planter mon dispatcher). Voici le code de mon client c# Code :
Code :
Merci d'avance ! |
||||
|
|
00
|
|
|
#10 | |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 026 ![]() |
Ah, tu voies
Citation:
le nombre de send (d'1 coté) et de recv (de l'autre cote) sont totalement décorélés. Tu peux avoir 3 send pour 1 seul recv ou alors 1 send pour 3 recv ou même 3 send pour 2 recv et toute autre variation. Une connexion TCP est un stream, il n'y a pas de notion de "commande unitaire" et de séparateur de commandes dedans. Donc, comme il n'y a pas de notion de séparateur, c'est à toi de le créer. Pour cela, je connais 2 méthodes différentes :
La seconde est un peu plus pénible à mettre en place mais elle est pérenne.
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
|
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 66 ![]() |
D'accord merci je vais regarder ça.
(je savais qu'il y aurait des bugs surtout vu ma connaissance du réseau EDIT: Après reflexion et correction mon serveur arrive à fonctionner normalement (à peu près). J'ai alors une question d'ordre plus général. Cet exemple de serveur n'était qu'un apprentissage pour moi (dans le cadre d'un tp en cours) mais je réalise parallèlement une application que j'aimerais mettre en réseau. Le serveur ici mis en place aurait je pense du mal à s'adapter à plus de quelques clients en simultané et ne pourrait pas traiter chaque client si ? Dans le cadre d serveur pour les jeux vidéos où en théorie des milliers de personnes peuvent se connecter en simultané comment ceci est géré ? (je suppose qu'il y a plusieurs serveurs déjà) c'est le meme processus ? 2 threads pour chaque client ? Un qui écoute et l'autre qui envoie ? Merci de votre réponse. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com