程式設計不過是一門失傳的藝術的別名,這門藝術的名字叫做“思考”
阿新 • • 發佈:2018-12-10
由於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 '成功';