繁体   English   中英

套接字连接无法从可执行jar运行

[英]Socket connection doesn't work from executable jar

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

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

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运行应用程序时,防火墙很可能接受给定端口上的连接。

尝试停用它(如果可以的话),看看它是否可以解决您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM