gpt4 book ai didi

JAVA - 在 Linux 上接收 UDP 数据包时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:15 25 4
gpt4 key购买 nike

你好,我编写了一个简单的代码来测试我正在做的程序。

代码在这里:

...

public static final byte precond[] = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
public static final byte aftercond[] = {(byte) 0x0a,(byte) 0x00};

String msg = new String(precond) + "challenge rcon" + new String(aftercond);
String aux = "";

//Enviar
DatagramSocket sc2 = new DatagramSocket(27020);
//sc2.setSoTimeout(5000);
DatagramPacket pkt = new DatagramPacket(msg.getBytes(),msg.length(),InetAddress.getByName("82.102.15.70"),27050);
sc2.send(pkt);
System.out.println("SENT");

//Receber
DatagramPacket pkt2 = new DatagramPacket(new byte[1024],1024);
sc2.receive(pkt2);
String recived = new String(pkt2.getData(),0,pkt2.getLength());
aux = recived.split(" ")[2].trim();
sc2.close();
System.out.println("RECIVED - " + aux);

...

好吧,这是一个简单的代码,它唯一的想法是向服务器发送一个 udp 数据包,然后服务器会响应。

问题是,这个工作在 Windows 上,但它在 ubuntu 上不起作用(服务器/桌面版,我不是在 linux 上说,因为我没有在另一个 destro 上尝试过)。

我已经检查了 IPtables 与路由器相关的所有内容,但我无法解决这个问题,代码运行到第一个 System.out 然后它阻止等待响应,但 ubuntu 上的响应从未到达:S

有人可以帮忙吗?

已经在另一台服务器(VPS)上试过了,还是一样的问题。

问题出在第一个数据包发送中!

Linux 屏幕:http://img853.imageshack.us/f/linuxr.png

Windows 屏幕:http://img339.imageshack.us/f/windowsep.png

最佳答案

我怀疑“默认”IP 地址不同。

您没有绑定(bind)到特定的 IP 地址,而是发送到机器的公共(public) IP。

我猜你在 linux 中调用 DatagramSocket sc2 = new DatagramSocket(27020); 时会得到 127.0.0.1

尝试:

DatagramSocket sc2 = 
new DatagramSocket(27020, InetAddress.getByName("<my public IP here>"));

关于JAVA - 在 Linux 上接收 UDP 数据包时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com