現在將實作可行的部分,寫下來。
一、環境介紹:
Server 虛擬機IP :192.168.32.181
Client 虛擬機IP :192.168.32.182
二、程式碼:(參考資料1)
(1)Server 程式碼
檔名:ServerSocket.php
<?php
$server_ip = '192.168.32.181';
$port = 25001;
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,$server_ip,$port);
socket_listen($socket,SOMAXCONN);
echo "SOMAXCONN =".SOMAXCONN."\n";
$count = 0;
do {
$msgsocket = socket_accept($socket);
echo "msgsocket =".$msgsocket."\n";
if ($msgsocket < 0) {
echo "socket_accept() fail : ".socket_strerror(socket_last_error())."\n";
break;
} else {
$datetime = date('Y-m-d H:i:s',time());
echo "Server datetime:{$datetime}\n";
$msg = "Hello client!".$count."\n";
socket_write($msgsocket,$msg,strlen($msg));
$buff = socket_read($msgsocket,2048);
echo "Receive client message: {$buff}"." count: ".$count."\n\n";
}
$count++;
socket_close($msgsocket);
} while ($count <= 5);
socket_close($socket);
?>
(2)client程式碼
檔名:client.php
<?php
$server_ip = '192.168.32.181';
$port = 25001;
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($socket,$server_ip,$port);
$in = "Hello Server!\n";
$out = '';
socket_write($socket,$in,strlen($in));
while($out = socket_read($socket,2048)) {
echo "Server response success!\n";
echo "Receive message:{$out}";
}
socket_close($socket);
?>
三、如何測試
1.使用終端機
(1)Server 端,指令
$php ServerSocket.php
(2)Client 端,指令
$php client.php
此時,Server 端出現的訊息為
此時,Client 端,連下5次指令
$php client.php
此時,Server 端出現的訊息為
2.使用瀏覽器
Server端只能下指令,無法使用瀏覽器執行程式。而client端可以用瀏覽器來執行。
(1)Server 端,指令
$php ServerSocket.php
(2)Client 端,開啟瀏覽器,其網址列為http://192.168.32.182/client.php
注意:client.php 須放在/var/www/html/ 內,權限為664
參考資料:1.使用終端機
(1)Server 端,指令
$php ServerSocket.php
(2)Client 端,指令
$php client.php
此時,Server 端出現的訊息為
此時,Client 端,連下5次指令
$php client.php
此時,Server 端出現的訊息為
Server端只能下指令,無法使用瀏覽器執行程式。而client端可以用瀏覽器來執行。
(1)Server 端,指令
$php ServerSocket.php
(2)Client 端,開啟瀏覽器,其網址列為http://192.168.32.182/client.php
注意:client.php 須放在/var/www/html/ 內,權限為664
按下F5,重新整理網頁,就可以看到變化
1.PHP Socket 編程實戰總結
https://www.jianshu.com/p/a7a2b828088e
2.基於PHP+MySQL的聊天室設計
沒有留言:
張貼留言