1. 程式人生 > >程式設計不過是一門失傳的藝術的別名,這門藝術的名字叫做“思考”

程式設計不過是一門失傳的藝術的別名,這門藝術的名字叫做“思考”

由於php7的升級,環境不一樣了,很多關於socket的程式碼出了點問題。然後需要在另一個環境下測試php7.2下socket是否有問題,就寫了個簡單的例子:

根據網上查詢的資料寫了一個很基本的server端與client端兩個php指令碼。

// server端 設定一些基本的變數    需要在server端執行此指令碼
$host = "10.0.20.252"; //服務端地址,為確保正確,此處不要寫 127.0.0.1,會報錯
$port = 8888;
// 設定超時時間
set_time_limit(0);
// 建立一個Socket
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
//繫結Socket到埠
$result = socket_bind($socket, $host, $port) or die(" socket_bind失敗!\n");
$ret = socket_listen($socket, 5);
if($ret){
    while (true){
        $spawn = socket_accept($socket) or die(" socket_accept失敗!\n");;
        echo("socket connected\n");
        if(!$spawn) break;
        $output = "成功!\n";
        socket_write($spawn, $output, strlen ($output)) or die("發生錯誤!\n");
        while($input = socket_read($spawn, 64)){
            echo($input);
        }
        echo("\n");
        socket_close($spawn);
    }
}
echo '成功';
// 客戶端 設定一些基本的變數
$host = "10.0.20.252";
$port = 8888;
// 設定超時時間
set_time_limit(0);
// 建立一個Socket
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
if(!$socket) echo "socket_create 失敗!";
//連線到Socket
$result = socket_connect($socket, $host, $port) or die(socket_strerror(socket_last_error($sock)));
if($result){
    $output="你好,伺服器!";
    socket_write($socket, $output, strlen ($output));
    $input = socket_read($socket, 1024);
    echo($input);
}
echo '成功';