Visualizzazione dei risultati da 1 a 10 su 10

Discussione: socket php

  1. #1

    socket php

    sto cercando ci inviare ad un pc una semplice stringa con le udp.
    questo è il codice che sto provando ad utilizzare ma non funziona. riuscite a darmi una mano?

    Codice PHP:
    <?php
    $msg 
    "messaggio di prova";
    $addr "mio ip dinamico";
    $port 80;
    $s socket_create(AF_INETSOCK_DGRAMSOL_UDP)
    socket_sendto($s$msgstrlen($msg), 0$addr$port);
    ?>

  2. #2
    Beh...devi prima connetterti al socket, poi scriverci il pacchetto e poi chiudere la connessione.
    Un client dovrebbe fare queste cose:
    Codice PHP:
    $socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
    if (
    $socket === false) {
        echo 
    "socket_create() failed: reason: " socket_strerror(socket_last_error()) . "\n";
    } else {
        echo 
    "OK.\n";
    }

    echo 
    "Attempting to connect to '$address' on port '$service_port'...";
    $result socket_connect($socket$address$service_port);
    if (
    $result === false) {
        echo 
    "socket_connect() failed.\nReason: ($result) " socket_strerror(socket_last_error($socket)) . "\n";
    } else {
        echo 
    "OK.\n";
    }

    $in "HEAD / HTTP/1.1\r\n";
    $in .= "Host: [url]www.example.com\r\n[/url]";
    $in .= "Connection: Close\r\n\r\n";
    $out '';

    echo 
    "Sending HTTP HEAD request...";
    socket_write($socket$instrlen($in));
    echo 
    "OK.\n";

    echo 
    "Reading response:\n\n";
    while (
    $out socket_read($socket2048)) {
        echo 
    $out;
    }

    echo 
    "Closing socket...";
    socket_close($socket);
    echo 
    "OK.\n\n"
    più o meno...
    Se invece vuoi usare proprio socket_sendto, dovresti comunque fare il bind
    Codice PHP:
     $sh socket_create(AF_INETSOCK_STREAMSOL_TCP);
        if (
    socket_bind($sh'127.0.0.1'4242)) {
            echo 
    "Socket bound correctly";
        }
        
    $buf 'Test Message';
        
    $len strlen($buf);
        if (
    socket_sendto($sh$buf$len0x100'192.168.0.2'4242) !== false) {
            echo 
    "Message sent correctly";
        }
        
    socket_close($sh); 

  3. #3
    riusciresti a crearmi la connessione semplice con le udp?
    comunque usando il tuo secondo codice mi da:
    Fatal error: Call to undefined function: socket_create() in /membri/calecorporation/NuovoFile.php on line 2

  4. #4
    Hmmm...nel php è abilitata la lib per i socket vero?
    Per farla udp dovrebbe bastare cambiare il flag relativo nella creazione del socket, anzichè SOL_TCP dovresti mettere SOL_UDP

  5. #5
    sono alle prime armi con il php. comunque ho creato su un sito altervista un file .php con questo codice ma mi da errore:
    Codice PHP:
    <?php $sh socket_create(AF_INETSOCK_STREAMSOL_UDP); if (socket_bind($sh'127.0.0.1'4242)) { echo "Socket bound correctly"; } $buf 'Test Message'$len strlen($buf); if (socket_sendto($sh$buf$len0x100'192.168.0.2'4242) !== false) { echo "Message sent correctly"; } socket_close($sh); ?>
    Fatal error: Call to undefined function socket_create() in /membri/calecorporation/NuovoFile.php on line 2

  6. #6
    Appunto, i socket non sono attivi nel php (e non c'è da stupirsi, dato che sei su altervista...)
    Se provi a vedere le phpinfo vedrai che non c'è nulla riguardo i socket..

  7. #7
    quindi cosa potrei fare se altervista non me lo permette' che sito mi consigli che mi potrebbe aiutare a fare questa operazione in modo gratuito?

  8. #8
    Originariamente inviato da nessuno92
    quindi cosa potrei fare se altervista non me lo permette' che sito mi consigli che mi potrebbe aiutare a fare questa operazione in modo gratuito?
    I servizi gratuiti difficilmente permettono i socket e a volte nemmeno quelli a pagamento (condivisi).
    Forse un vps, ma gratuiti proprio nessuno che io sappia

  9. #9
    capito. grazie dell'aiuto che mi hai dato!

  10. #10
    nota a margine:
    per le comunicazioni tramite UDP il concetto di "connessione" non esiste

    prima però di fare l'invio del pacchetto è importante effettuare il bind della socket

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.