Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [JAVA] Socket UDP

  1. #1

    [Java] Come faccio a fare comunicare 2 thread in locale con le Socket UDP?

    Salve Ragazzi ho creato un client e un server che utilizzano l'UDP in java, ma quando cerco di testarli in locale viene sempre sollevata l'eccezione BindException, che mi dice che sto cercando di assegnare lo stesso indirizzo 2 volte.Questo è una parte del codice che ho usato nel server:

    socket1=new DatagramSocket(8086);
    socket1.receive(rcv); //ricezione del datagram UDP
    payload=rcv.getData(); //estrazione del carico utile dal datagram port=rcv.getPort(); //estrazione del numero di porto del mittente address=rcv.getAddress();
    ....
    snd=new DatagramPacket(invio,invio.length,address,port);
    socket2=new DatagramSocket();
    socket2.send(snd);//invio del datagram UDP

    questa è la parte del codice client che uso per la connessione:

    snd=new DatagramPacket(invio,invio.length,InetAddress.getB yName("localhost"),8086);
    socket1=new DatagramSocket();
    try{
    socket1.send(snd);//invio del datagram
    }catch(IOException e3){//gestore dell'eccezione
    System.err.println("E' stata catturata un'eccezione del tipo: "+e3.toString()+"\n");
    }
    Cosa devo modificare per rendere possibile la connessione anche in locale?E Dove?

  2. #2
    ciao, benvenuto

    visto che sei nuovo ti invito a leggere il regolamento del forum: http://forum.html.it/forum/showthrea...hreadid=588640

    p.s. questa volta il titolo lo modifico io... la prossima volta ricordati che va specificato anche il linguaggio.
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Non credo che si debba aggiungere codice particolare. Prova a modificare l'istruzione che crea la DatagramPacket in questo modo (non ho mai usato quel modo per reperire l'indirizzo locale):
    codice:
    snd=new DatagramPacket(invio,invio.length,InetAddress.getLocalHost(),8086);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4

    Il problema persiste

    Già avevo provato con getLocalHost() ma mi solleva lo stesso l'eccezione

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Uhm... prova ad aggiungere questa riga all'interno dei blocchi catch, così vediamo qual'è esattamente la riga incriminata, che solleva l'eccezione:
    codice:
    oggettoEccezione.printStackTrace();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.