gpt4 book ai didi

java - 套接字连接无法通过可执行 jar 工作

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

我有一个应用程序监听特定的 UDP 端口并通过它接收数据。当我通过 eclipse 运行它时,我能够接收数据,无论是从同一计算机上运行的应用程序(发送到本地主机)还是从远程计算机(使用相同的发送应用程序)接收数据。但是,当我生成可执行 jar 并尝试运行它时,它仅在发送应用程序位于同一台计算机上(发送到本地主机)时运行。

这是我用来监听传入数据的代码:

public class listenToPort implements Runnable{
ByteArrayOutputStream mainBAOS = new ByteArrayOutputStream();

@Override
public void run() {
DatagramSocket Socket = null;
try {
Socket = new DatagramSocket(5000);
Socket.setSoTimeout(10000);

byte[] Input = new byte [571];
while(true) {
DatagramPacket Packet = new DatagramPacket(Input, Input.length);
Socket.receive(Packet);
byte[] data = new byte[Packet.getLength()];

System.arraycopy(Packet.getData(), 0, data, 0, Packet.getLength());
try {
synchronized (this){
mainBAOS.write(data);
}
} catch(IOException ex) {ex.printStackTrace();}


Thread.sleep(5);
}
}
catch (SocketTimeoutException ex) {System.out.println("No incoming data from socket, socket closed");}
catch(IOException ex) {ex.printStackTrace();}
catch (InterruptedException ex) {ex.printStackTrace();}
finally{
Socket.close();
}
}

}

这种奇怪行为的原因可能是什么?关于如何修复它有什么想法吗?感谢您的帮助。

我应该补充一点,程序不会抛出任何错误或类似的东西,它只是不会通过套接字接收任何数据。

最佳答案

这很可能是防火墙问题。最有可能的是,仅当应用程序使用 Eclipse 运行时,防火墙才接受给定端口上的连接。

尝试停用它(如果合理的话)看看它是否能解决您的问题!

关于java - 套接字连接无法通过可执行 jar 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49550483/

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