Garmaine Staff asked 10 years ago

Let's say Java has two kind of sockets:

  • server sockets "ServerSocket"
  • client sockets or just "Socket"

Imagine the situation of two processes:

X = Client
Y = Server

The server process Y : has a "ServerSocket", that is listening to a TCP port
The client process X : sends a connection request through a "Socket" to Y.

Y: Then the accept() method returns a new client type "Socket",
when it occurs, the two Sockets get "interconnected",

So: the socket in client process, is connected with the socket in the server process.
Then: reading/writing through socket X is like reading/writing through socket Y.
Now, two Client Sockets get interconnected!!

But…
What if I create the two Client sockets in same process, and I want to get them "interconnected" ?

… even possible?

Let's say how to have two client socket get interconnected without using an intermediate ServerSocket?

I've solved it by creating two Threads for continuously reading A and writing B, and other for reading B and writng A…
But I think could be a better way… (Those world-energy-consuming threads are not necessary with the client-server approach)

Any help or advice would be appreciated!! Thanks


Edit:

Example of application: "An existent server application could be converted to a client one", For example VNC server, one client socket connects to the VNC server, and other client socket is created (to connect to a middle server), then the application interconnects the two client resulting the VNC server is a client application! And then, no public IP is needed.

VNCServer—MyApp—> |middle server| <—User