Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20

Discussione: socket_bind error

  1. #11
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ecco l'errore che mi da

    Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: Di norma è consentito un solo utilizzo di ogni indirizzo di socket (protocollo/indirizzo di rete/porta). in C:\Apache2\htdocs\workgroup\BroadcastUdp\broadcast .php on line 11
    Could not bind to socket

  2. #12
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up

  4. #14
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up

  5. #15
    ehm ...

    il bind, al massimo, lo puoi fare su 0.0.0.0, giusto per avere qualcosa di universale, non sul 255.255.255.255, che poi non è affatto l'indirizzo di broadcast, ma anche se lo fosse di certo non ti ci puoi bindare su

    Per ricevere pacchetti UDP basta che fai il socket bind su una specifica porta e uno specifico IP, IP che deve essere nella sottorete nel quale viene lanciato il pacchetto broadcast

    Per quanto riguarda l'address di broadcast, deve essere l'ultimo indirizzo disponibile nella tua sotto rete, per intenderci:
    - Base Rete: 192.168.0.0
    - Netmask: 255.255.255.0

    Questo implica che l'ultimo indirizzo della rete è il 192.168.0.255 ed è quello di broadcast

    Quindi devi lanciare socket_bind o su un IP specifico o su 0.0.0.0 per bindare tutti gli IP e poi devi lanciare un pacchetto, dallo stesso programma o da un altro programma, che sia ovviamente UDP e che abbia come destinazione 192.168.0.255
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #16
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    booh....sto facendo un casino di tutto....

    Prova a dare un occhiata al codice che sto provando...ma che mi sta dando un sacco di errori.


    Primo tentativo (preso da php.net)
    Codice PHP:

    $host 
    "255.255.255.255";
    $port 1680;
    $broadcast_string "Remote Admin";



    $sock socket_create(AF_INETSOCK_DGRAMSOL_UDP);
    socket_set_option($sockSOL_SOCKETSO_BROADCAST1);
    socket_sendto($sock$broadcast_stringstrlen($broadcast_string), 0$host$port);



    socket_recvfrom($sock,$broadcast_string,strlen($broadcast_string),0,$host,$port); 

    attenzione....fino alla socket_sendto funziona....infatti mi restituisce 12 che e' la stringa che invio....

    Non capisco perche non va la recv .....
    Mi dice "unable to recvfrom[0] operazione completata"



    Secondo tentativo:


    Codice PHP:

    $host 
    "255.255.255.255";
    $port 1680;
    $broadcast_string "Remote Admin";

    $sock socket_create(AF_INETSOCK_DGRAMSOL_UDP);
    if(
    $sock === FALSE) { 
        echo 
    'fallita socket_create: '.socket_strerror(socket_last_error())."\n"
        exit(
    1); 



    socket_bind($sock,'0.0.0.0',$port);


    socket_sendto($sock$broadcast_stringstrlen($broadcast_string), 0$host$port); 

    In questo caso funziona il bind....ma la sendto da questo errore :

    "unable to write socket [0] : Tentativo di accesso al socket con modalità non consentita dalle rispettive autorizzazioni di accesso"




    Help please....

  7. #17
    ti ho risposto poco fa, se tu avessi letto la mia risposta avresti già fixato il codice

    il sendto non può utilizzare

    255.255.255.255

    come IP di destinazione, ma deve utilizzare l'indirizzo di broadcast della tua sotto rete

    ed inoltre non puoi emttere il recvfrom subito dopo il sendto perché tu non sai quando ti arriva
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    l'ho letto e come....ma non so niente di reti sottoreti broadcast....quindi....purtroppo finche non avro' pratica ,...sto mirando a far andare sta cosa....


    Allora....nemmeno cosi va

    Codice PHP:
    $sock socket_create(AF_INETSOCK_DGRAMSOL_UDP);
    if(
    $sock === FALSE) { 
        echo 
    'fallita socket_create: '.socket_strerror(socket_last_error())."\n"
        exit(
    1); 


    socket_bind($sock,'0.0.0.0',$port);


    socket_sendto($sock$broadcast_stringstrlen($broadcast_string), 0x100"192.168.0.255"1680); 


    dice operazione richiesta non supportata per il tipo di oggetto....






    Alt...fermi tutti.....mettendo 0 al posto di 0x100 va.....ma cos'e' sto flag?

  9. #19
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    inoltre mi suggeriresti come scrivere il codice per il recvfrom ? basta fare
    while(true){

    socket_recvfrom.....
    }


    ???

    ho provato....ma da sempre unable to recvfrom.....dove sbaglio ?

  10. #20
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    vabeh....sto proseguendo su una strada tutta mia .....forse sbagliata forse no....
    Attendo che qualcuno lasci un commento...

    Ora come ora....sembra che io riceva qualcosa.... Mi piacerebbe che daniele mi spiegasse come mai, nonostante non abbia fatto un ciclo....sulla socket_recvfrom ottengo comunque un int....nel mio caso esattamente uguale a quello che ho mandato nel send.

    ecco il codice che sembra funzionare
    Codice PHP:
    $host "192.168.0.255";
    $port 1680;
    $broadcast_string "Remote Admin";
    $sock socket_create(AF_INETSOCK_DGRAMSOL_UDP);
    if(
    $sock === FALSE) { 
        echo 
    'fallita socket_create: '.socket_strerror(socket_last_error())."\n"
        exit(
    1); 


    socket_bind($sock,'0.0.0.0',$port);


    socket_sendto($sock$broadcast_stringstrlen($broadcast_string), 0$host$port); 


    $rv socket_recvfrom($sock,$broadcast_string,strlen($broadcast_string),0,$host,$port);
        
    echo 
    $rv

    echo $rv stampa 12......

    Come faccio a vedere i caratteri ? a leggere quello che mi arriva?

    socket_read() ?????

    Vorrei che nessuno si arrabbiasse se faccio domande un po stupide....continuo a ribadire che sono veramente spaesato a parlare di ip , reti e sottoreti....


    ciao e grazie

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