Verbinden von zwei client-sockets

Lassen Sie uns sagen, Java hat zwei Arten von sockets:

  • server-sockets "ServerSocket"
  • client-sockets oder einfach nur "Buchse"

Stellen Sie sich die situation von zwei Prozessen:

X = Client

Y = Server

Den server-Prozess Y : hat ein "ServerSocket",, das hört auf einem TCP-port

Der client-Prozess X : sendet eine Verbindungsanforderung über eine "Steckdose" zu Y.

Y: Dann ist die accept() - Methode gibt eine neue client-Typ "Socket",

wenn es Auftritt, die zwei Sockel bekommen, "miteinander",

Also: der socket im client-Prozess, der verbunden ist mit der socket in dem server-Prozess.

Dann: Lesen/schreiben durch sockel X ist wie Lesen/schreiben über socket Y.

Jetzt, zwei Client Sockets Holen Sie sich miteinander!!

Aber...

Was ist, wenn ich die beiden Client-sockets im gleichen Prozess,
und ich möchte, um Sie "miteinander" ?

... auch möglich?

Lassen Sie uns sagen, wie haben zwei client-socket-Holen Sie sich miteinander, ohne Umweg über ServerSocket?

Ich habe es gelöst, indem zwei Threads für das kontinuierliche Lesen Eines und schreiben B,
und andere für das Lesen von B und writng Ein...

Aber ich denke, dass könnte einen besseren Weg geben...
(Die Welt-Energieverbrauch-threads sind nicht notwendig mit der client-server Ansatz)

Jede Hilfe oder Ratschläge würde geschätzt!! Dank


Edit:

Beispiel der Anwendung: "Eine existierende server-Anwendung umgewandelt werden kann, um eine client -",
Zum Beispiel VNC-server, einen client-socket-Verbindung auf den VNC-server und den anderen client-socket erstellt wird (für die Verbindung zu einem mittleren server), dann die Anwendung verbindet die beiden Clients aus der VNC-server ist eine client-Anwendung! Und dann, keine öffentliche IP ist erforderlich.

VNCServer---Anwendung - ---> |middle server| <---Benutzer

  • danke für den Kommentar, ich habe es sauber, ein wenig!, und vermeiden Sie die Kappen. Für zu einem missverständlichen Thema habe ich versucht zu erklären, es langsam, danke
  • Korrigieren Sie mich, wenn ich falsch bin, aber hier ist das, was ich verstanden habe: Sie haben die Anwendung auf einem server ausgeführt, der VNCServer auf einem anderen und middleServer auf den Dritten server. Benutzer eine Verbindung zu middle-server (ich denke mal, dass eine öffentliche IP). Sie verbinden möchten, zu VNCServer von middle-server, aber Ihr VNCServer ist in einigen intranet-und middle-server außerhalb dieses Netzwerkes. Sie wollen So die Brücke zu den verbindungen. Zu tun, dass Sie geschrieben haben "myApp" (das ist innerhalb des Intranets) öffnet Verbindung zum middle-server, dann VNCServer und Sie möchten, übergeben von Daten an-vom Mittel-server VNCServer. Kommt das nahe?
  • Eche, vielen Dank für die Reinigung und die Bereitstellung von mehr info! Entfernt meine down-vote.
  • Ja, die kommen in der Nähe, (VNCServer eine Anwendung sein könnte, sogar in der gleichen Maschine), und ja, die Ersten darin sein könnte einem intranet, und ich überbrücken die Anschlüsse, ich habe zwei "MyApp" laufen, Einer im intranet zu interconect VNCServer mit mitten-server (lassen Sie uns sagen, ein clientsocket-zu-clientsocket-Stecker) und in der Mitte server zu erstellen der server (sagen wir ein serversocket-zu-serversocket-Stecker), Ich habe nannte Sie auch "Adapter", da erinnert mich das an die Buchse-Buchse, Stecker-Stecker audio-oder alle-Stecker-Adapter =)
  • Kann jemand nur helfen, optimieren Sie den code, wenn Sie buchen Sie es zuerst.
  • Ja! Ich glaube, ich habe es! Ich glaube, ich weiß, was Sie wollen. Genau wie TeamViewer. Sie haben einen server, der hält, wer online ist. Dass der main-server hat eine statische öffentliche IP, wo alle clients eine Verbindung herstellen können. Dies bedeutet, dass die "VNCServer" ist nicht wirklich eine große server-Maschine. Es ist auch ein client für das Netzwerk, aber es hat einen ServerSocket laufen. So VNCServer kann sagen, der Haupt-server, wo er ist (öffentliche IP).

InformationsquelleAutor Hernán Eche | 2010-04-05
Schreibe einen Kommentar