2012-12-29 13 views
9

ho bisogno di implementare uno script php sul mio sito che avrebbe fatto quanto segue:Connessione a un server TCP/IP tramite script php

  1. Connettersi a un server remoto
  2. Invia pacchetto al server
  3. ricezione dei pacchetti dal server

Tutto è già configurato sul lato server per rispondere alle richieste dei pacchetti, ho solo bisogno di capire come usare php per connettersi al server TCP/IP.

Qualche idea in quale direzione guardare?

+1

programmazione socket è w stai cercando ...? –

+0

intendi come dare un comando "ping" nel terminale, vuoi implementarlo da PHP? –

+0

Il manuale PHP è la giusta direzione per iniziare. http://php.net/manual/en/function.fsockopen.php –

risposta

16

facilmente con prese php:

<?php 
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    fwrite($fp, "You message"); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
?> 

Per saperne di più - http://php.net/manual/en/function.fsockopen.php

+0

Provato e funziona in un modo - Vedo che lì è una nuova connessione nel registro del server. Tuttavia, la pagina dice che c'è stato un timeout. Hai idea del motivo per cui potrebbe essere così? –

+0

@John Forse il tuo server non sta chiudendo la connessione, quindi 'feof' non restituisce vero? –

+0

Ci scusiamo per l'urto ma sto ricevendo un 'Connection Refused (61)', anche dopo aver aperto le porte tramite 'ufw' sul lato server. – Razgriz

8
<?php 
error_reporting(E_ALL); 

/* Allow the script to hang around waiting for connections. */ 
set_time_limit(0); 

/* Turn on implicit output flushing so we see what we're getting 
* as it comes in. */ 
ob_implicit_flush(); 

$address = '192.168.1.53'; 
$port = 10000; 

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { 
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; 
} 

if (socket_bind($sock, $address, $port) === false) { 
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 

if (socket_listen($sock, 5) === false) { 
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 

do { 
    if (($msgsock = socket_accept($sock)) === false) { 
     echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
     break; 
    } 
    /* Send instructions. */ 
    $msg = "\nWelcome to the PHP Test Server. \n" . 
     "To quit, type 'quit'. To shut down the server type 'shutdown'.\n"; 
    socket_write($msgsock, $msg, strlen($msg)); 

    do { 
     if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
      echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n"; 
      break 2; 
     } 
     if (!$buf = trim($buf)) { 
      continue; 
     } 
     if ($buf == 'quit') { 
      break; 
     } 
     if ($buf == 'shutdown') { 
      socket_close($msgsock); 
      break 2; 
     } 
     $talkback = "PHP: You said '$buf'.\n"; 
     socket_write($msgsock, $talkback, strlen($talkback)); 
     echo "$buf\n"; 
    } while (true); 
    socket_close($msgsock); 
} while (true); 

socket_close($sock); 
?> 

this is just an example from net for further look documentation

la connessione al server TCP

$host="192.168.1.99"; 
    $port = 1234; // open a client connection 
    $fp = fsockopen ($host, $port, $errno, $errstr); 
    if (!$fp) { 
    $result = "Error: could not open socket connection"; 
    } 
    else { // get the welcome message fgets ($fp, 1024); // write the user string to the socket 
    fputs($fp, $message); // get the result $result .= fgets ($fp, 1024); // close the connection 
    fputs ($fp, "END"); 
    fclose ($fp); // trim the result and remove the starting ? 
    $result = trim($result); 
    $result = substr($result, 2); // now print it to the browser 
    } ?> 
    Server said: <? echo $result; ?> 
+3

Questo è un esempio di come creare un server TCP, non come connettersi a uno ... –

Problemi correlati