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();
}
}