Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    DatagramChannels non funzionano

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


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: DatagramChannels non funzionano

    Originariamente inviato da Mr.Bloom
    il seguente codice mi stampa 0 mentre dovrebbe stamparmi 4.
    Sì, perché dopo la lettura il position del buffer è andato a 4 e tu cerchi di leggere da lì in avanti!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Hai ragione, bravo!

    se chiamo la flip() dopo la receive funziona perfettamente.
    grazie

    MB

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.