PHP socket 網路編程執行個體

來源:互聯網
上載者:User
PHP socket 網路編程執行個體

一開始對socket不太理解,做起東西很模糊,後來做過定位請求的項目,對socket的理解更清楚了。
貼一下範例程式碼:

SERVER端 Php代碼   <?php    //確保在串連用戶端時不會逾時    set_time_limit(0);       //設定IP和連接埠號碼    $address='127.0.0.1';    $port=2009;    //調試的時候,可以多換連接埠來測試程式。       //建立一個SOCKET    if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)    {    echo "socket_create() 失敗的原因是:".socket_strerror($sock)."<br>";    }       //綁定到socket連接埠    if(($ret=socket_bind($sock,$address,$port))<0)    {    echo "socket_bind() 失敗的原因是:".socket_strerror($ret)."<br>";    }       //開始監聽    if(($ret=socket_listen($sock,4))<0)    {    echo "socket_listen() 失敗的原因是:".socket_strerror($ret)."<br>";    }       do {    if (($msgsock = socket_accept($sock)) < 0)    {    echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "/n";    break;    }       //發到用戶端    $msg ="<font color=red>歡迎進入伺服器。</font><br>";    socket_write($msgsock, $msg, strlen($msg));       echo "讀取用戶端發來的資訊<br>";    $buf = socket_read($msgsock,8192);          $talkback = "收到的資訊:$buf<br>";    echo $talkback;    /* if(socket_write($msgsock, $talkback, strlen($talkback))<0)        {         echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "/n";        }        else        {         echo "發送成功";        }*/         //echo $buf;    socket_close($msgsock);    } while (true);       socket_close($sock);    ?>  

<?php//確保在串連用戶端時不會逾時set_time_limit(0);//設定IP和連接埠號碼$address='127.0.0.1';$port=2009;    //調試的時候,可以多換連接埠來測試程式。//建立一個SOCKETif(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0){echo "socket_create() 失敗的原因是:".socket_strerror($sock)."<br>";}//綁定到socket連接埠if(($ret=socket_bind($sock,$address,$port))<0){echo "socket_bind() 失敗的原因是:".socket_strerror($ret)."<br>";}//開始監聽if(($ret=socket_listen($sock,4))<0){echo "socket_listen() 失敗的原因是:".socket_strerror($ret)."<br>";}do {if (($msgsock = socket_accept($sock)) < 0){echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "/n";break;}//發到用戶端$msg ="<font color=red>歡迎進入伺服器。</font><br>";socket_write($msgsock, $msg, strlen($msg));echo "讀取用戶端發來的資訊<br>";$buf = socket_read($msgsock,8192);$talkback = "收到的資訊:$buf<br>";echo $talkback;/* if(socket_write($msgsock, $talkback, strlen($talkback))<0)     {      echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "/n";     }     else     {      echo "發送成功";     }*///echo $buf;socket_close($msgsock);} while (true);socket_close($sock);?>

 




CLIENT端 Php代碼   <?php    error_reporting(E_ALL);    set_time_limit(0);    echo "<h2>TCP/IP Connection</h2>/n";       $service_port = 2009;    $address = "127.0.0.1";          $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);    if ($socket < 0)    {    echo "socket_create() failed: reason: " . socket_strerror($socket) . "/n";    }    else   {    echo "OK./n";    }       echo "試圖串連 '$address' 連接埠 '$service_port'...<br>";    $result = socket_connect($socket, $address, $service_port);    if ($result < 0)    {    echo "socket_connect() failed./nReason: ($result) " . socket_strerror($result) . "/n";    }    else   {    echo "串連OK<br>";    }       $in = "Hello/r/n";    $in .= "我是Chester/r/n";    $out = '';    $out1='';          if(!socket_write($socket, $in, strlen($in)))    {    echo "socket_write() failed: reason: " . socket_strerror($socket) . "/n";    }    else   {    echo "發送到伺服器資訊成功。<br>";    echo "發送的內容為:<font color='red'>$in</font> <br>";    }       while($out = socket_read($socket, 8192))    {    echo "接收伺服器回傳資訊成功。<br>";    echo "接受的內容為:",$out;    }          echo "關閉SOCKET...<br>";    socket_close($socket);    echo "關閉OK<br>";    ?>  

<?phperror_reporting(E_ALL);set_time_limit(0);echo "<h2>TCP/IP Connection</h2>/n";$service_port = 2009;$address = "127.0.0.1";$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket < 0){echo "socket_create() failed: reason: " . socket_strerror($socket) . "/n";}else{echo "OK./n";}echo "試圖串連 '$address' 連接埠 '$service_port'...<br>";$result = socket_connect($socket, $address, $service_port);if ($result < 0){echo "socket_connect() failed./nReason: ($result) " . socket_strerror($result) . "/n";}else{echo "串連OK<br>";}$in = "Hello/r/n";$in .= "我是Chester/r/n";$out = '';$out1='';if(!socket_write($socket, $in, strlen($in))){echo "socket_write() failed: reason: " . socket_strerror($socket) . "/n";}else{echo "發送到伺服器資訊成功。<br>";echo "發送的內容為:<font color='red'>$in</font> <br>";}while($out = socket_read($socket, 8192)){echo "接收伺服器回傳資訊成功。<br>";echo "接受的內容為:",$out;}echo "關閉SOCKET...<br>";socket_close($socket);echo "關閉OK<br>";?>

 

先運行server.php


再運行client.php

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.