Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。
在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。
<?php
echo "****************server*****************\r\n";//設(shè)置 IP 和 端口(端口必須保證不被占用,且允許被外部訪問)$ip = "127.0.0.1";
$port = 1935;//超時(shí)設(shè)計(jì)set_time_limit(0);//創(chuàng)建socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("創(chuàng)建socket失敗,原因?yàn)椋簕socket_strerror($socket)}\r\n");//綁定socket到指定ip和端口$ret = socket_bind($socket, $ip, $port) or die("綁定socket失敗,原因?yàn)椋簕socket_strerror($ret)}\r\n");//監(jiān)聽socket,最大等會(huì)數(shù)為4$ret = socket_listen($socket, 4) or die("監(jiān)聽socket失敗,原因?yàn)椋簕socket_strerror($ret)}\r\n");//計(jì)數(shù)$count = 0;
echo "等待連接!!!\r\n";do { //收到請(qǐng)求連接 //調(diào)用子socket處理信息
$msgsock = socket_accept($socket); if(!$msgsock){
echo "socket阻塞失敗,原因?yàn)椋簕socket_strerror($msgsock)}\r\n";
}
$msg = "<p style='color:red'>連接成功</p>"; //處理客服端輸入并返回?cái)?shù)據(jù) socket_write($msgsock, $msg, strlen($msg));
$buf = socket_read($msgsock, 8192);
$talkback = "收到的信息為:{$buf}\r\n";
echo $talkback; if(++$count > 5) { break;
}
socket_close($msgsock);
} while(true);
socket_close($socket);