2010-06-24 2 views
0

en C++ en utilisant la bibliothèque de prise de fenêtres en utilisant Windows32 utilisant UDP est-il possible de donner une information de routage client à un autre client pour établir une connexion entre les clients sans avoir à acheminer par l'intermédiaire du serveurC++ Windows32 winsock UDP routage?

Clarification:

serveur - attend des ordinateurs et donne des informations de routage - un client détaché client - envoie une requête ack et attend des informations de routage - un ordinateur utilisateur normal

mais ok donc il n'est pas possible de donner des informations de routage aux clients pour interconnecter les clients sans nécessiter le les données à transmettre via le serveur?

+0

Veuillez clarifier votre problème. Êtes-vous à la recherche d'une solution P2P ou souhaitez-vous jouer avec l'en-tête IP? –

+0

Quel serait le point de routage explicite d'un paquet? Cela remonte à des décennies de travail d'ingénierie réseau. – wallyk

+0

Il supprimerait les frais généraux sur les serveurs et améliorer le temps aller-retour – erai

Répondre

0

Réponse courte: non

Réponse longue: oui --- mais vous devez utiliser IPPROTO_IP, pas IPPROTO_UDP. Utilisez l'option IP_OPTIONS dans setsockopt() pour définir source routing.

+0

merci mal essayer que – erai

1

Réponse courte: non. Réponse longue: Quelle que soit l'information que vous incluez dans votre paquet UDP, au niveau de la couche de transport, il s'agit juste d'un autre paquet IP, et votre carte d'interface réseau lui écrase les en-têtes appropriés. À moins que les hôtes ne soient directement connectés les uns aux autres, la topologie du réseau dictera le nombre de sauts (routeurs/commutateurs) qu'il doit faire pour y arriver.

Addendum:

Je ne suis pas sûr de ce que vous entendez par serveur (je l'ai lu comme « routeur » au départ, mais vous pourriez tout aussi bien pu parler d'un Domain Name Server (DNS)). Si vous essayez d'éviter la recherche DNS, vous pouvez facilement le faire en fournissant une adresse IP directement (en supposant que vous le sachiez). Cependant, la recherche DNS est un processus ponctuel - une fois l'adresse IP connue, l'hôte DNS n'est pas impliqué dans le routage de vos paquets UDP.

+0

um ok oui mais je ne veux pas utiliser le serveur comme un routeur im demandant de l'utiliser pour connecter les clients, ne pas l'utiliser comme routeur – erai

+0

@erai: Je suis toujours très confus par votre terminologie. Si les clients ne sont pas directement connectés les uns aux autres (par exemple avec un seul câble Ethernet A-> B ou une connexion WiFi ad hoc), ils devront passer par au moins un routeur (commutateur/concentrateur/etc) pour se connecter les uns aux autres. Je ne vois pas comment vous prévoyez d'éviter cela. –