簡體   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