É possível um Servidor (Server Socket) escutar em mais de uma porta simultaneamente?, ou seja,
é possível 2 programas usando portas diferentes acederem ao mesmo Servidor via Sockets TCP?
Sockets acedendo o Servidor em Portas diferentes
4
1 Resposta
Você pode usar as classes ServerSocket e Socket. A classe ServerSocket recebe no construtor a porta no qual ele vai ouvir. Pra ouvir em várias você pode criar várias threads, cada uma com um ServerSocket diferente
Segue um código inicial pra aprender a usar. Ele tem um Server que recebe uma String de um Cliente e imprime "Hello + String" pro Cliente
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(4000);
while (true) {
Socket socket = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String name = reader.readLine();
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println("Hello " + name);
writer.flush();
socket.close();
}
}
}
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 4000);
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output);
writer.println("Victor");
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = reader.readLine();
System.out.println("Recebeu " + response + " do server");
socket.close();
}
}
Certamente deve ter formas melhores de fazer usando bibliotecas, mas ai já não sei como é
Criado 5 de setembro de 2011
Ultima resposta 5 de set. de 2011
Respostas 1
Participantes 2