php中Socket創(chuàng)建與監(jiān)聽實(shí)現(xiàn)方法
本文實(shí)例講述了php中Socket創(chuàng)建與監(jiān)聽實(shí)現(xiàn)方法。分享給大家供大家參考。具體如下:
這里提供了在php中socket相關(guān)函數(shù)的一個(gè)實(shí)例,如創(chuàng)建Socket,接受一個(gè)socket連接 ,寫入一個(gè)Socket及初始化連接等操作,具體實(shí)例代碼如下:
$port=1000; //定義端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //創(chuàng)建socket
$bind=socket_bind($socket,$ip,$prot); //綁定一個(gè)socket
$listen=socket_listen($socket); //監(jiān)聽socket
$msg=socket_accept($socket); //接受一個(gè)socket連接
$welcome="歡迎來到php服務(wù)/n"; //定義字符串
socket_write($msg,$welcome,strlen($welcome)); //寫入一個(gè)socket
socket_close($socket); //關(guān)閉socket
*/
$ip="127.0.0.1"; //定義ip地址
$port=1000; //定義端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //創(chuàng)建socket
socket_clear_error($socket); //清空socket錯(cuò)誤信息
socket_close($socket); //關(guān)閉socket
/*
*/
$sockets=array(); //定義一個(gè)數(shù)組
/*建立一對socket,并存儲在數(shù)組中*/
if(!socket_create_pair(af_unix,sock_stream,0,$sockets)) //如果socket沒有成功創(chuàng)建
{
echo socket_strerror(socket_last_error()); //輸出錯(cuò)誤信息
}
/*使用創(chuàng)建的socket收發(fā)信息*/
if(!socket_write($sockets[0],"abcdef123n",strlen("abcdef123n"))) //如果執(zhí)行socket寫失敗
{
cho socket_strerror(socket_last_error()); //輸出錯(cuò)誤信息
}
if(!$data=socket_read($sockets[1],strlen("abcdef123n"),php_binary_read)) //如果讀取信息失敗
{
echo socket_strerror(socket_last_error()); //輸出錯(cuò)誤信息
}
var_dump($data); //輸出socket數(shù)據(jù)信息
/*關(guān)閉socket*/
socket_close($sockets[0]); //關(guān)閉socket1
socket_close($sockets[1]); //關(guān)閉socket2
/*
*/
$ip="127.0.0.1"; //定義ip地址
$port=1000; //定義端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //創(chuàng)建socket
socket_set_nonblock($socket); //設(shè)置不鎖定狀態(tài)
socket_connect($socket,$ip,$port); //初始化連接
socket_set_block($sock); //鎖定socket
switch(socket_select($r=array($socket),$w=array($socket),$f=array($socket),5))
{
case 2:
echo "連接被拒絕!n";
break;
case 1:
echo "成功連接n";
break;
case 0:
echo "連接超時(shí)n";
break;
}
/*
*/
/*以下代碼定義一個(gè)socket監(jiān)聽類*/
class socketlistener extends socket
{
function __construct($port=null) //定義__construct方法
{
$this->stream=@socket_create_listen($port?$port:port); //打開端口接受連接
}
function isactive() //定義isactive方法
{
if($this->stream) //如果有連接
{
return true; //返回真值
}
else //無連接
{
return false; //返回假值
}
}
}
希望本文所述對大家的php程序設(shè)計(jì)有所幫助。
- PHP中使用TCPDF生成PDF文檔實(shí)例
- php實(shí)現(xiàn)TCP端口檢測的方法
- php socket通信(tcp/udp)實(shí)例分析
- PHP基于socket實(shí)現(xiàn)客戶端和服務(wù)端通訊功能
- PHP基于socket實(shí)現(xiàn)的簡單客戶端和服務(wù)端通訊功能示例
- 用PHP的socket實(shí)現(xiàn)客戶端到服務(wù)端的通信實(shí)例詳解
- php使用socket編程示例
- PHP實(shí)現(xiàn)Socket服務(wù)器的代碼
- php socket客戶端及服務(wù)器端應(yīng)用實(shí)例
- PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法
- PHP編程實(shí)現(xiàn)的TCP服務(wù)端和客戶端功能示例
相關(guān)文章
PHP生成指定隨機(jī)字符串的簡單實(shí)現(xiàn)方法
這篇文章主要介紹了PHP生成指定隨機(jī)字符串的簡單實(shí)現(xiàn)方法,涉及php操作數(shù)組與字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04PHP中IP地址與整型數(shù)字互相轉(zhuǎn)換詳解
這篇文章主要介紹了PHP中IP地址與整型數(shù)字互相轉(zhuǎn)換詳解,本文介紹了使用PHP函數(shù)ip2long與long2ip的使用,以及它們的BUG介紹,最后給出自己寫的兩個(gè)算法,需要的朋友可以參考下2014-08-08PHP實(shí)現(xiàn)的簡單四則運(yùn)算計(jì)算器功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的簡單四則運(yùn)算計(jì)算器功能,結(jié)合實(shí)例形式分析了PHP基于堆棧實(shí)現(xiàn)的表達(dá)式運(yùn)算功能,需要的朋友可以參考下2017-12-12利用PHP如何實(shí)現(xiàn)Socket服務(wù)器
想要構(gòu)建聊天應(yīng)用,或者甚至是游戲嗎?那么,socket服務(wù)器將成為你邁出的第一步。一旦你了解了創(chuàng)建服務(wù)器的基本功能,那么后續(xù)的優(yōu)化步驟就會(huì)變得同樣簡單,需要的朋友可以參考下2015-09-09關(guān)于URL最大長度限制的相關(guān)資料查證
這篇文章主要介紹了關(guān)于URL最大長度限制的相關(guān)資料查證,這里記錄一下,方便以后使用。2014-12-12php實(shí)現(xiàn)的錯(cuò)誤處理封裝類實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)的錯(cuò)誤處理封裝類,結(jié)合具體實(shí)例形式分析了php錯(cuò)誤判斷、提示及日志相關(guān)操作技巧,需要的朋友可以參考下2017-06-06