non capisco cosa sbaglio ma i datagram channels non sembrano funzionare
il seguente codice mi stampa 0 mentre dovrebbe stamparmi 4.
sono due semplici classi: la prima avvia la secodna in un altro thread aspetta nu secondo e poi invia
un intero al secondo thread che intanto si è messo in receive sempre con i DatagramChannels.
Codice PHP:
public class test {
public static void main(String argv[]) throws IOException{
DatagramChannel s = DatagramChannel.open();
ByteBuffer b = ByteBuffer.allocate(256);
/* acchitta su il receiver */
receiver r = new receiver();
r.start();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
System.err.println("mannaggia");
}
/* la jvm sceglie la porta */
s.socket().bind(new InetSocketAddress(0));
b.putInt(5).flip();
s.send(b, new InetSocketAddress("127.0.0.1",8888));
}
}
class receiver extends Thread {
DatagramChannel r ;
ByteBuffer b = ByteBuffer.allocate(14);
@Override
public void run(){
try {
r = DatagramChannel.open();
r.socket().bind(new InetSocketAddress(8888));
} catch (IOException ex) {
System.err.println("mannaggia");
}
try {
r.receive(b);
} catch (IOException ex) {
System.err.println("mannaggia");
}
System.out.println(b.getInt());
}
}