Zwei Client-Sockets verbinden
Nehmen wir an, Java hat zwei Arten von Sockets:
server sockets "ServerSocket"Client Sockets oder einfach "Socket"tellen Sie sich die Situation von zwei Prozessen vo
X = Client
Y = Server
Der Serverprozess Y: hat einen "ServerSocket", der auf einen TCP-Port wartet
Der Client-Prozess X: sendet eine Verbindungsanforderung über einen "Socket" an Y.
Y: Dann dasaccept()
-Methode gibt einen neuen Client-Typ "Socket" zurück,
wenn es auftritt, werden die beiden Sockets "miteinander verbunden",
So: Der Socket im Client-Prozess ist mit dem Socket im Server-Prozess verbunden.
Then: Lesen / Schreiben über Socket X ist wie Lesen / Schreiben über Socket Y.
Now, zweiKlien Sockets werden miteinander verbunden !!
Aber..
Was passiert, wenn ich die beiden Client-Sockets im selben Prozess erstelle und sie miteinander verbinden möchte?
... überhaupt möglich
Sagen wir, wie zwei Client-Sockets miteinander verbunden werden, ohne dass ein dazwischenliegender ServerSocket verwendet wird?
Ich habe es gelöst, indem ich zwei Threads zum kontinuierlichen Lesen von A und Schreiben von B und andere zum Lesen von B und Schreiben von A erstellt habe ...
Aber ich denke, könnte ein besserer Weg sein ... (Diese welt-energieverbrauchenden Threads sind beim Client-Server-Ansatz nicht erforderlich)
Jede Hilfe oder Beratung wäre dankbar !! Vielen Dan
Bearbeiten
Anwendungsbeispiel: "Eine vorhandene Serveranwendung könnte in eine Clientanwendung konvertiert werden". Beispiel: Ein VNC-Server, ein Client-Socket stellt eine Verbindung zum VNC-Server her, und ein anderer Client-Socket wird erstellt (um eine Verbindung zu einem mittleren Server herzustellen) Anwendung verbindet die beiden Clients, wodurch der VNC-Server eine Client-Anwendung ist! Dann wird keine öffentliche IP benötigt.
VNCServer --- MyApp ---> | mittlerer Server | <--- User