[英]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.