Olá, bom dia
Estou fazendo uma aplicação que tenho um Cliente em java e um Servidor em Python. A aplicação usa o protocolo UDP.
Cliente
private BlockingQueue<byte[]> queue;
private DatagramSocket socket;
private InetAddress address;
private byte[] buf;
private byte[] size;
private int sizeLen;
public UDPConnections() {
try {
size = new byte[2048];
sizeLen = size.length;
socket = new DatagramSocket(38901);
if (Niggiex.IP.contains(":")) {
address = InetAddress.getByName(Niggiex.IP.split(":")[0]);
} else {
address = InetAddress.getByName(Niggiex.IP);
}
} catch (SocketException | UnknownHostException ex) {
ex.printStackTrace();
}
queue = new LinkedBlockingQueue<>();
}
public void sendData(byte[] data) {
try {
buf = data;
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, Niggiex.port);
socket.send(packet);
packet = new DatagramPacket(buf, buf.length);
} catch (IOException ex) {
ex.printStackTrace();
}
}
Servidor
s1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s1.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s1.bind(('0.0.0.0', 5000))
while True:
data, ip = s1.recvfrom(2048)
packetsQueue.put(data);
Agora o problema: quando eu executo em localhost, a conexão é feita perfeitamente, tudo funciona. Já quando eu executo em um servidor que eu tenho, ele faz a conexão, mas por algum motivo, o servidor está recebendo em uma porta aleatória (algo como 1250, 1225, sempre essas portas baixas), mesmo eu definindo no cliente a porta 38901.