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.
Pergunta
Skizz
Estava tentando trocar informações com proxy do bungeecord usando sockets, porem está dando alguns erros.
Erro:
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