這段程式碼可能很有幫助...
以下程式碼適用於「伺服器」。它會持續監聽訊息,直到按下 CTRL-C
<?php
while (true)
{
receive_message('127.0.0.1','85',5);
}
function receive_message($ipServer,$portNumber,$nbSecondsIdle)
{
$socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr);
if (!$socket)
{
echo "$errstr ($errno)<br />\n";
}
else
{
while ($conn = @stream_socket_accept($socket,$nbSecondsIdle))
{
$message= fread($conn, 1024);
echo '我已收到:'.$message;
fputs ($conn, "OK\n");
fclose ($conn);
}
fclose($socket);
}
}
?>
以下程式碼適用於「客戶端」。它會發送訊息並讀取回應...
<?php
send_message('127.0.0.1','85','要發送的訊息...');
function send_message($ipServer,$portServer,$message)
{
$fp = stream_socket_client("tcp://$ipServer:$portServer", $errno, $errstr);
if (!$fp)
{
echo "錯誤: $errno - $errstr<br />\n";
}
else
{
fwrite($fp,"$message\n");
$response = fread($fp, 4);
if ($response != "OK\n")
{echo '無法執行指令...\n原因:'.$response;}
else
{echo '執行成功...';}
fclose($fp);
}
}
?>