您好,登錄后才能下訂單哦!
php socket通信機制實例說明與代碼----什么是socket 所謂socket一般也稱作"套接字",用于描述ip地址和端口,是一個通訊鏈的句柄。使用程序一般經過"套接字"向network發出請求也許應對network請求。說白了就是一種通訊機制。它類似于銀行,電信啊這一些部分的電話客服業務單元。您打電話的時候,那邊會調設置一個人回答您的問題,客服業務單元就相當于socket的服務器端了,您這邊呢就相當于用戶端了,在和您通話完結前,假設有人在想找和您通話的那個談話是不可能的,由于您在和他通訊,當然客服業務單元的電話更換機也不會重復調配。
下面我將舉例子來說明一下,socket是怎樣工作的。假設您是基于使用層開發的人員并不一定要理解原理,然而能曉得那是更好了。網絡有對于socket的php api。下下來用就行了。
socket服務器server.php // 構建server端socket
$tcp = getprotobyname("tcp");
$socket = socket_create(af_inet, sock_stream, $tcp);
socket_bind($socket, '127.0.0.1', 10008); //綁定要監聽的端口
socket_listen($socket); //監聽端口
//初始化一個DATA,和用戶端通訊
$buffer = "connect";
while (true) { // 接受一個socket聯接
$connection = socket_accept($socket);
if(!$connection){
echo "connect fail";
}else{
echo "socket connectedn"; // 向用戶端傳送一個信息DATA
if ($buffer != "") {
echo "send data to clientn";
socket_write($connection, $buffer . "n");
echo "wrote to socketn";
} else {
echo "no data in the buffern" ;
} // 從用戶端獲得信息
while ($data = @socket_read($connection, 1024, php_normal_read)) {
printf("buffer: " . $data . "n"); //獲得信息給用戶端一個反響
socket_write($connection, "information receivedn");
}
}
socket_close($connection); //封鎖 socket
printf("closed the socketn");
}
?>
另外注意,socket用戶端client.php
// 構建用戶端的socet聯接
$socket = socket_create(af_inet, sock_stream, sol_tcp);
$connection = socket_connect($socket, '127.0.0.1', 10008); //聯接服務器端socket
while ($buffer = @socket_read($socket, 1024, php_normal_read)) { //服務端告訴用戶端,自身的形態
if (preg_match("/not connect/",$buffer)) {
echo "don`t connectn";
break;
} else { //服務器傳來信息
echo "buffer data: " . $buffer . "n";
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。