socket servidor multiples clientes cliente java sockets client-server localhost

java - multiples - ¿Es posible ejecutar un servidor de socket y un cliente de socket en la misma máquina?



sockets en java cliente servidor netbeans (4)

Sí, es completamente posible. Cada sistema operativo tiene una interfaz de loopback . Puede tener varios clientes conectados a un servidor en su computadora. Este tipo de comunicación tiene lugar a través de la interfaz de bucle invertido.

En Java, es posible crear un servidor de socket y un cliente de socket. ¿Es posible tener una instancia del servidor de socket en ejecución y un cliente de socket / servidor que recibe datos del servidor de socket en la misma máquina?

por ejemplo, el servidor de socket se ejecuta en el puerto 60010 y el cliente de socket se está ejecutando en la misma máquina que se conecta a ese puerto a través de un socket o ¿lo necesitaré en una nueva máquina y agregarlo a mi red? Si tiene una dirección IP única y un número de puerto en ejecución en la capa TCP / IP.


Sí, puede ejecutar un cliente y un servidor en la misma máquina. Lo hago todo el tiempo para el desarrollo. Sin embargo, si tiene problemas, algunos enrutadores tienen problemas para reenviar paquetes a sí mismos. Intente usar localhost en lugar de su IP externa para el desarrollo.


Sí, puedes tener lo siguiente en la misma máquina:

ServerSocket server = new ServerSocket(60010); Socket client = server.accept();

En algún otro lugar:

Socket socket = new Socket("localhost", 60010); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println("Hello server");


Aquí hay un simple ejemplo ejecutable para comenzar. Inicia dos subprocesos, uno con un ServerSocket y otro que hace una conexión Socket . Uno envía continuamente cadenas y el otro las imprime.

Simplemente deberías poder ejecutar esta clase como está.

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; public class SocketTest { public static void main(String[] args) throws IOException { startServer(); startSender(); } public static void startSender() { (new Thread() { @Override public void run() { try { Socket s = new Socket("localhost", 60010); BufferedWriter out = new BufferedWriter( new OutputStreamWriter(s.getOutputStream())); while (true) { out.write("Hello World!"); out.newLine(); out.flush(); Thread.sleep(200); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } public static void startServer() { (new Thread() { @Override public void run() { ServerSocket ss; try { ss = new ServerSocket(60010); Socket s = ss.accept(); BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } }