2012-12-29 10 views
9

मैं अपनी वेबसाइट पर एक PHP स्क्रिप्ट है जो निम्न करना होगा लागू करने की आवश्यकता: सर्वर से PHP स्क्रिप्ट के माध्यम से एक टीसीपी/आईपी सर्वर से कनेक्ट हो

  • संदेश पैकेट एक दूरस्थ सर्वर से

    1. कनेक्ट
    2. सर्वर

    सब कुछ पहले से ही सर्वर साइड पर configurated है पैकेट अनुरोध का जवाब देना से पैकेट प्राप्त करें, मैं सिर्फ कैसे टीसीपी/आईपी सर्वर से कनेक्ट करने के लिए php का उपयोग करने के यह पता लगाने की जरूरत है।

    कोई भी विचार जिसमें दिशा दिखानी है?

  • +1

    सॉकेट प्रोग्रामिंग w है टोपी आप के लिए देख रहे हैं ...? –

    +0

    क्या आप टर्मिनल में "पिंग" कमांड देने के समान हैं, PHP द्वारा कार्यान्वित करना चाहते हैं? –

    +0

    PHP मैनुअल शुरू करने के लिए सही दिशा है। http://php.net/manual/en/function.fsockopen.php –

    उत्तर

    16
    आसानी 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); 
    } 
    ?> 
    

    आगे पढ़ें - http://php.net/manual/en/function.fsockopen.php

    +0

    कोशिश की और यह एक तरह से काम करता है - मैं देखता हूं कि वहां सर्वर लॉग में एक नया कनेक्शन है। हालांकि, पृष्ठ कहता है कि एक टाइमआउट रहा है। क्या आपको कोई विचार है कि ऐसा क्यों हो सकता है? –

    +0

    @ जॉन शायद आपका सर्वर कनेक्शन बंद नहीं कर रहा है, इसलिए 'feof' सच नहीं है? –

    +0

    टक्कर के लिए खेद है, लेकिन मुझे सर्वर कनेक्शन पर 'ufw' के माध्यम से बंदरगाहों को खोलने के बाद भी' कनेक्शन अस्वीकार (61) 'मिल रहा है। – 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

    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

    यह उदाहरण है कि कैसे टीसीपी सर्वर बनाने के लिए, एक से कनेक्ट करने के लिए कैसे नहीं ... –

    संबंधित मुद्दे