Ir para conteúdo
  • 0

Problema com sockets


Skizz

Pergunta

Estava tentando trocar informações com proxy do bungeecord usando sockets, porem está dando alguns erros.

Erro:

14:41:37 [GRAVE] java.net.BindException: Address already in use: JVM_Bind
14:41:37 [GRAVE]     at java.net.TwoStacksPlainSocketImpl.socketBind(Native Method)
14:41:37 [GRAVE]     at java.net.TwoStacksPlainSocketImpl.socketBind(Unknown Source)
14:41:37 [GRAVE]     at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
14:41:37 [GRAVE]     at java.net.TwoStacksPlainSocketImpl.bind(Unknown Source)
14:41:37 [GRAVE]     at java.net.PlainSocketImpl.bind(Unknown Source)
14:41:37 [GRAVE]     at java.net.ServerSocket.bind(Unknown Source)
14:41:37 [GRAVE]     at java.net.ServerSocket.<init>(Unknown Source)
14:41:37 [GRAVE]     at java.net.ServerSocket.<init>(Unknown Source)
14:41:37 [GRAVE]     at Java.ProxyClient.run(ProxyClient.java:13)
14:41:37 [GRAVE]     at java.lang.Thread.run(Unknown Source)

Codigo:

package Java;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ProxyClient implements Runnable {

	@Override
	public void run() {
		while(true){
			try {
				ServerSocket server = new ServerSocket(10000);//Linha 13
				System.out.println("[Proxy] Esperando servidor se conectar!");
				System.out.println("[Proxy] IP: " + server.getInetAddress().getHostAddress() + ":" + server.getLocalPort());
				Socket socket = server.accept();
				new Thread(new ProxyManagerClient(socket), "ProxyManager").start();;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}

ProxyManagerClient

package Java;

import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

public class ProxyManagerClient implements Runnable {

	private Socket socket;
	public ProxyManagerClient(Socket socket) {
		this.socket = socket;
	}
	
	@Override
	public void run() {
		try {
			Scanner scanner = new Scanner(socket.getInputStream());
			String text = scanner.nextLine();
			scanner.close();
			String[] data = text.split("-");
			String name = data[0];
			String ip = data[1];
			Status action = Status.valueOf(data[2]);
			int max = Integer.valueOf(data[3]);
			Server server = Servers.get(name);
			if(server == null){
				server = new Server(name, ip.split(":")[0], Integer.parseInt(ip.split(":")[1]));
			}
			server.setStatus(action);
			server.setMaxPlayers(max);
			Servers.register(server);
			System.out.println("[Servidor] O servidor " + name + " foi " + action.toString() + " agora!" );
			System.out.println("[Servidor] IP: " + ip);
		} catch (IOException | IllegalArgumentException e) {
			e.printStackTrace();
		}
		
	}

}

Classe que envia o socket:

package Bukkit.Network;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

public class Network {
	
	private Socket socket;
	private PrintWriter pw;
	
	public Network(){
		try{
			socket = new Socket("0.0.0.0", 10000);
			pw = new PrintWriter(socket.getOutputStream());
		}catch(IOException e){
			e.printStackTrace();
		}
	}
	
	public void send(String msg){
		pw.println(msg);
	}

}

Procurei na internet e vi que isso pode ser que a porta esteja sendo usada, porem coloquei uma porta muito alto e continua dando erro. Ja até reiniciei o PC para saber se era um erro no windows mas permanece esse erro.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

Eu testei o código aqui e funcionou, só deu erro quando coloquei uma porta que já estava em uso.

 

Tente alterar a porta novamente, teste algumas aleatórias...

Um problema que estava é o ServerSocket tava dentro do while, consegui resolver essa parte mas estou com outro problema. O servidor so recebe a mensagem do cliente quando ele se conecta e manda a mensagem, depois ele não recebe mais.

Eu testei o código aqui e funcionou, só deu erro quando coloquei uma porta que já estava em uso.

 

Tente alterar a porta novamente, teste algumas aleatórias...

Consegui resolver, vlw. O erro principal é que o ServerSocket tava tendo do while(true) não tinha visto aquilo. Burrice nivel 1000

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...