Java program udp kommunikációs problémája linuxon

Java program udp kommunikációs problémája linuxon
2015-05-19T09:59:49+02:00
2015-05-21T08:21:39+02:00
2022-10-15T22:05:21+02:00
Jago
Sziasztok!

Egy olyan problémába futottam bele, hogy nem működik a java-as udp kommunikáció linuxon.

A kommunikáció lokális hálózatban, először, egy windows (itt futott a Java program is) és egy linux gép között zajlott tökéletesen. Amint sikerült megoldani, hogy a linuxon is futtatható legyen a Java program, a kommunikáció már nem működik. Az UDP kommunikáció a java programon belül egy szálban fut.

A Java program bármilyen információt képes megkapni, és megjeleníteni, viszont a válasz nem érkezik meg.  A program úgy működik, hogy a kapott üzenetre válaszol azonnal. Az üzenetből nyeri ki a port számát is, és az ip címet is amire válaszolni kell és minden esetben küld választ, ami windows -on mindig megérkezett, linuxon pedig egyszer sem.

A program a következő :

public class UDPServer extends Thread { byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; @Override public void run() { try { DatagramSocket serverSocket = new DatagramSocket(server_port); while (watch) { Post_Data = ""; try { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); String RecString = new String(receivePacket.getData(), 0, receivePacket.getLength()); Receive_Data = RecString; InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); Post_Data=Receive_Data; sendData = Post_Data.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); UDPServer.sleep(waiting); } catch (InterruptedException ex) { Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("Fogad: "+Receive_Data); System.out.println("Küld : "+Post_Data); } } catch (SocketException ex) { Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); } } }

Remélem valaki tud valamilyen megoldást a problémámra, és előre is köszönök szépen minden féle építő hozzászólást a témában!
Mutasd a teljes hozzászólást!
Megoldás.

Sok sok keresgélés, és nézegetés után, kiderült, hogy az ip címmel volt a probléma. Az a függvény, ami Windows rendszeren simán visszaadta a küldő IP címét, melynek segítségével a fogadó program tudott címezni visszafelé, az Linux alatt nem működött, és a fogadó, a függvénnyel saját magát címezte meg, így az üzenet soha nem jutott el oda ahova szerettük volna. Fix IP cím beállítása esetén a probléma megoldódott.

Köszönök szépen mindenkinek minden építő hozzászólást a témában!
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd