Python - Java: Aplicação UDP Cliente - Servidor

0 respostas
pythonjava
Arkasher

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.

Criado 12 de julho de 2019
Respostas 0
Participantes 1