Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: PHP e Socket

  1. #1

    PHP e Socket

    Ciao sono di nuovo qui con un mio dilemma.
    Premetto che sto utilizzando php 4.2
    Ho provato a scrivere due script in locale che usano i socket uno per ricevere ed un'altro per mandare la stringa. Ma il problema e che quando li lancio le finestre rimangono vuote anche se una dovrebbe visualizzare la stringa.
    Ora vi posto gli script :

    <?php
    $host = "Qui inserisco indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die ("Impossibile crearne uno");
    $result = socket_bind($socket, $host, $port) or die ("Impossibile creare un bind");
    $result = socket_listen($socket, 3) or die ("Impossibile ascoltare");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
    $input = trim($input);
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>

    Script che dovrebbe mandare la stringa:

    <?php
    $host = "indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die ("Impossibile crearne uno");
    $result = socket_bind($socket, $host, $port) or die ("Impossibile creare un bind");
    $result = socket_listen($socket, 3) or die ("Impossibile ascoltare");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $output = "Ciao a Tutti" . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>
    Sarei lieto di ricevere ogni aiuto .
    ----------------------------------------------------------------------
    VI RINGRAZIO DA PARTE MIA E DI TUTTE LE PERSONE CHE AIUTATE
    A CRESCERE IL PROPRIO BAGAGLIO CULTURALE SU QUESTE MATERIE.
    Dedicato a tutti coloro che cercano di aiutare.

  2. #2
    mmm probabilmente non funziona, ma non mi sono addentrato più di tanto nel codice, per via di quello zero in socket_create

    infatti li dovrebbe essere specificato la tipologia di protocollo da utilizzare (TCP, UDP, ICMP e cosi via)

    prova a mettere, al posto dello zero, SOL_TCP in tutte e due i socket_create

    e comunque prova anche a connetterti via telnet al server, in modo che capisci quale delle due parti non funziona
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3

    PHP e Socket

    Ciao grazie per la dritta ho inserito quello che mi
    hai postato ma comunque non mi apare sul server
    la scritta "Ciao a Tutti" , pero ho provato con telnet
    e se mi collego al server rimane in ascolto ma appena
    clicco un tasto dal prompt di telnet mi cade il server,
    e mi da la scritta Connessione all'host perduta,
    invece quando mi ci collego al cliente con telnet
    mi restituisce la scritta "Ciao a Tutti".
    Per favore aiutatemi che ci sono vicino grazie


  4. #4
    scusami, me ne sono accorto solo ora ... tu usi listen in tutti e due gli script

    ma in quello che si deve connettere devi usare connect ))

    (bind toglilo, la porta la seleziona in auto lui)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5

    PHP e Socket

    Grazie di nuovo ora ti posto il codice con la modifica ma comunque
    non mi funziona
    ----------------------------------------------------------------------
    <?php
    $host = "Indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ("Impossibile crearne uno");
    $result = socket_bind($socket, $host, $port) or die ("Impossibile creare un bind");
    $result = socket_listen($socket, 3) or die ("Impossibile ascoltare");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>
    Cliente
    <?php
    $host = "indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ("Impossibile crearne uno");
    $result = socket_connect($socket, $host, $port ) or die ("Impossibile connettersi");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $input = "Ciao a Tutti" . "\n";
    socket_write($spawn, $input, strlen ($input)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>
    ---------------------------------------------------------------------
    Mi da sempre lo stesso problema si aprono le finestre senza darmi nessun errore ma non finisce mai di caricarle complettamente.
    Se potresti consigliarmi qualche bel libro sia in lingua inglese che in italiano te ne sarei grato sei stato gentilissimo non so veramente come ringraziarti

  6. #6

    Re: PHP e Socket

    Originariamente inviato da Devil01
    Grazie di nuovo ora ti posto il codice con la modifica ma comunque
    non mi funziona
    ----------------------------------------------------------------------
    <?php
    $host = "Indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ("Impossibile crearne uno");
    $result = socket_bind($socket, $host, $port) or die ("Impossibile creare un bind");
    $result = socket_listen($socket, 3) or die ("Impossibile ascoltare");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $input = socket_read($spawn, 1024) or die("Could not read input\n");
    $output = strrev($input) . "\n";
    socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>
    Cliente
    <?php
    $host = "indirizzo ip";
    $port = 110;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ("Impossibile crearne uno");
    $result = socket_connect($socket, $host, $port ) or die ("Impossibile connettersi");
    $spawn = socket_accept($socket) or die ("Impossibile accettare");
    $input = "Ciao a Tutti" . "\n";
    socket_write($spawn, $input, strlen ($input)) or die("Could not write output\n");
    socket_close($spawn);
    socket_close($socket);
    ?>
    ---------------------------------------------------------------------
    Mi da sempre lo stesso problema si aprono le finestre senza darmi nessun errore ma non finisce mai di caricarle complettamente.
    Se potresti consigliarmi qualche bel libro sia in lingua inglese che in italiano te ne sarei grato sei stato gentilissimo non so veramente come ringraziarti
    ehm, nella parte che si connette non deve usare neanche accept

    solo socket connect e con quella socket devi andare

    www.php.net/socket_connect
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7

    PHP e Socket

    Grazie di tutto Daniel,
    ma non va sto provando a cambiare porta, ma nulla da fare ho anche ricontrollato nel php.ini ma vedo l'estensione
    extension=php_sockets.dll senza punto e virgola infatti non mi genera nessun errore continuero a provarci perche mi serve veramente ma a questo punto non so piu cosa fare. Poi non capisco perche con telnet mi funziona sto impazzendo.

  8. #8

    Re: PHP e Socket

    Originariamente inviato da Devil01
    Grazie di tutto Daniel,
    ma non va sto provando a cambiare porta, ma nulla da fare ho anche ricontrollato nel php.ini ma vedo l'estensione
    extension=php_sockets.dll senza punto e virgola infatti non mi genera nessun errore continuero a provarci perche mi serve veramente ma a questo punto non so piu cosa fare. Poi non capisco perche con telnet mi funziona sto impazzendo.
    se telnet va ... ha problemi, per l'appunto, la parte client ^^

    http://www.php.net/socket_connect
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9

    PHP e Socket

    Non riesco a capire anche se ho provato ad usare le funzioni socket_last_error e socket_strerror non mi va a recuperare nessun errore come se non aviene nessun errore.
    Come avevi detto daniele l'errore e nel cliente infatti dove tante prove presumo di aver capito che l'errore aviene in socket_write
    perche eliminado la stringa $spawn = socket_accept($socket)
    alla stringa socket_write($spawn, $input, strlen ($input))
    non posso piu passargli la variabile $spawn che conteneva socket_accept ho provato a passargli una volta la variabile $socket
    e un'altra volta la variabile $result ma continua a non funzionarmi sempre senza restituirmi nessun errore cosi sa non potermi orientarmi
    Potresti darmi solo qualche altro piccolo aiutino e tutto il giorno che provo.
    O se ce un modo migliore di quello che sto usando forse e il modo che
    sto usando che mi complica la vita.
    Di nuovo grazie

  10. #10
    socket_write lo deve fare il server, mentre socket_read lo deve fare il client

    server -> scrive
    client -> legge
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.