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 {
            
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());
    }