Connecter deux sockets client

Disons que Java a deux types de sockets:

  • serveur de sockets "ServerSocket"
  • sockets client ou tout simplement de "Socket"

Imaginer la situation de deux processus:

X = Client

Y = Serveur

Le processus de serveur de Y : a "ServerSocket", qui est à l'écoute sur un port TCP

Le processus client X : envoie une demande de connexion par le biais d'un "Socket" pour Y.

Y: Alors la accept() méthode renvoie un nouveau client de type "Socket",

lorsque cela se produit, les deux Douilles d'obtenir "interconnectés",

Donc: la prise en processus client est connecté avec le support dans le processus serveur.

Ensuite: la lecture/écriture par le biais de prise X, c'est comme la lecture/écriture par le biais de prise Y.

Maintenant, deux Client Sockets obtenir interconnectés!!

Mais...

Que faire si je créer les deux sockets Client dans le même processus,
et je veux les faire "interconnectés" ?

... même possible?

Disons comment avoir deux socket client obtenir reliés entre eux sans l'aide d'un intermédiaire ServerSocket?

Je l'ai résolu par la création de deux Threads en continu, la lecture de l'Un et de l'écriture B,
et d'autres pour la lecture B et en écriture d'Un...

Mais je pense pourrait être une meilleure façon...
(Ceux du monde de consommation d'énergie threads ne sont pas nécessaires avec l'approche client-serveur)

De l'aide ou des conseils seraient appréciés!! Grâce


Edit:

Exemple d'application: "Un existant de l'application serveur peut être converti en un seul client",
Par exemple, le serveur VNC, un socket client se connecte au serveur VNC, et d'autres client socket est créée (pour se connecter à un milieu serveur), alors l'application relie les deux client résultant le serveur VNC est un client demande! Et puis, pas d'IP publique est nécessaire.

VNCServer---MyApp---> |moyen| serveur <---l'Utilisateur

  • merci pour les commentaires, j'ai nettoyer un peu!, et éviter les bouchons. Pour être un mistakable sujet, j'ai essayé de l'expliquer lentement, merci
  • Corrigez-moi si je me trompe, mais voici ce que j'ai compris: vous avez MyApp en cours d'exécution sur un serveur, VNCServer sur l'autre, et middleServer sur la troisième serveur. L'utilisateur se connecte à moyen serveur (qui je pense a une IP publique). Vous souhaitez vous connecter à VNCServer du moyen-serveur, mais votre VNCServer est à l'intérieur de certaines intranet et du moyen-serveur est à l'extérieur de ce réseau. Donc, vous voulez combler les connexions. Pour faire ce que vous avez écrit myApp (qui est à l'intérieur de l'intranet) ouvre une connexion à moyen-serveur, puis à VNCServer et vous souhaitez transmettre des données à partir du milieu du serveur de VNCServer. Est-ce à approcher?
  • Eche, merci pour tout nettoyer et de fournir plus d'infos! Enlevé mon bas-vote.
  • Oui qui viennent fermer, (VNCServer un MyApp peut-être même dans la même machine), et oui, le VNCServer pourrait être à l'intérieur d'un intranet, et j'pont les connexions, j'ai deux "MyApp" en cours d'exécution, l'Un dans l'intranet de interconect VNCServer avec le moyen-serveur (disons un clientsocket-à-clientsocket plug) et une au milieu serveur pour recréer un serveur (disons un serversocket-à-serversocket plug), J'ai même appelé les "adaptateurs" parce que cela me rappelle la femelle-femelle, mâle-mâle audio ou tout-adaptateurs de prise =)
  • Quelqu'un peut seulement vous aider à optimiser le code, si vous le poster en premier.
  • Oui! Je pense que je l'ai eu! Je pense que je sais ce que vous voulez. Tout comme TeamViewer. Ils ont un serveur qui tient qui est en ligne. Ce serveur a une IP publique statique où tous les clients peuvent se connecter. Donc, cela signifie que le "VNCServer" n'est pas vraiment un gros serveur de la machine. C'est aussi un client pour le réseau, mais il a un ServerSocket en cours d'exécution. Ainsi, le VNCServer peut dire que le serveur principal où il est (IP publique).

InformationsquelleAutor Hernán Eche | 2010-04-05