Sockets acedendo o Servidor em Portas diferentes

1 resposta
4

É 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?

1 Resposta

victorcosta

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