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ù)組
/*建立一對(duì)socket,并存儲(chǔ)在數(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; //返回假值
}
}
}
希望本文所述對(duì)大家的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實(shí)現(xiàn)抓取HTTPS內(nèi)容
這篇文章主要介紹了PHP實(shí)現(xiàn)抓取HTTPS內(nèi)容,以及遇到的問題的解決方法,需要的朋友可以參考下2014-12-12
PHP ADODB實(shí)現(xiàn)分頁功能簡單示例
這篇文章主要介紹了PHP ADODB實(shí)現(xiàn)分頁功能,結(jié)合實(shí)例形式分析了php使用ADODB實(shí)現(xiàn)分頁功能相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
PHP正則匹配日期和時(shí)間(時(shí)間戳轉(zhuǎn)換)的實(shí)例代碼
本文介紹下,用php實(shí)現(xiàn)正則匹配日期與時(shí)間,并進(jìn)行時(shí)間戳轉(zhuǎn)換的例子,有需要的朋友,參考下吧2016-12-12
php 5.6版本中編寫一個(gè)PHP擴(kuò)展的簡單示例
這篇文章主要介紹了php 5.6版本中編寫一個(gè)PHP擴(kuò)展的簡單示例,本文給出擴(kuò)展實(shí)現(xiàn)代碼、編譯方法、配置方法和使用例子等內(nèi)容,需要的朋友可以參考下2015-01-01
PHP中session跨子域的三種實(shí)現(xiàn)方法
做項(xiàng)目的時(shí)候跨域問題在cooike及session中我們經(jīng)常會(huì)使用到了,不過php對(duì)于子域處理是比較簡單的了,小編整理了三個(gè)解決方案,下面一起來看看。2016-07-07
php8擴(kuò)展arginfo生成工具及工具初體驗(yàn)介紹
這篇文章主要為大家介紹了php8的擴(kuò)展arginfo生成工具及工具初體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
PHP設(shè)計(jì)模式之工廠模式實(shí)例總結(jié)
這篇文章主要介紹了PHP設(shè)計(jì)模式之工廠模式,簡單介紹了工廠模式的概念、原理并結(jié)合實(shí)例形式總結(jié)分析了工廠模式的具體定義及使用方法,需要的朋友可以參考下2017-09-09

