Zdravím. Potýkám se teď s poměrně příšerným problémem a Gůgl mlčí.
Píšu něco jako UDP2HTTP proxy v Javě a běžím to na OpenSuSE 11.0, IBM serveru x3550. Mám následující kód (toto je jeho hodne orezana verze, takze doufam, ze bude fungovat ;-) ) : public class DatagramReceiverServer { public static class DatagramReceiverThread extends Thread { private DatagramPacket packet; private DatagramSocket socket; private static int counter = 0; public DatagramReceiverThread(DatagramSocket socket, DatagramPacket packet) { super("DatagramReceiverThread"+(counter++)); this.packet = packet; this.socket = socket; } public void run() { try { byte[] policko = packet.getData(); if (policko == null || packet.getLength()==0) { //no data return; } byte[] zufan = new byte[packet.getLength()]; System.arraycopy(policko,0,zufan,0,packet.getLength()); policko = zufan; if (policko.length == 1) { //command data final byte command = policko[0]; DatagramReceiverServer.process(command); } else { //so do something processRequest(policko); } } catch (IOException e) { e.printStackTrace(); System.err.println("IOException received:"+e.getLocalizedMessage()); } } private int processRequest(byte[] policko) throws IOException { HttpURLConnection conn = (HttpURLConnection) new URL("http://moje.postove.urlcko").openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); OutputStream outputStream = conn.getOutputStream(); outputStream.write(policko); outputStream.flush(); outputStream.close(); int code = conn.getResponseCode(); if (code != 200) { //ups } boolean cekej = true; if (cekej) { byte[] outpole= "Doslo".getBytes(); DatagramPacket outgoing = new DatagramPacket(outpole,outpole.length,packet.getSocketAddress()); outgoing.setSocketAddress(packet.getSocketAddress()); socket.send(outgoing); } return code; } } static boolean listening = true; public static void process(byte code) { listening = false; } public static void main(String[] args) throws IOException { int port = 9999; String host="localhost"; DatagramSocket datagramSocket = new DatagramSocket(port,InetAddress.getByName(host)); datagramSocket.disconnect(); while (listening) { byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); datagramSocket.receive(packet); new DatagramReceiverThread(datagramSocket, packet).start(); } } } Toto pekne funguje, dostavam UDP pakety = preposilam po HTTP a kdyz dostanuy zpatky dvoustovku, tak poslu zpet potvrzovaci paket a slus, vsichni jsou spokojeni. Ale az do chvile, kdy promennou cekej prenastavim z true na false, tedy kdyz nechci nazpet nic posilat. Aniz bych se o cokoli snazil, system zpet odesila UDP paket, a co je horsi, je dle WireSharku malformed a navic je prazdny. Nemate nekdo pro to vysvetleni? Dik vsem, tapik