未分类

【www.2979.com】           //定义端口,具体实例代码如下

18 12月 , 2019  

本文实例讲述了php中Socket创建与监听实现方法。分享给大家供大家参考。具体如下:

$ip=”127.0.0.1″;          //定义ip地址
$port=1000;           //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp);  //创建socket
$bind=socket_bind($socket,$ip,$prot);      //绑定一个socket
$listen=socket_listen($socket);        //监听socket
$msg=socket_accept($socket);        //接受一个socket连接
$welcome=”欢迎来到php服务/n”;       //定义字符串
socket_write($msg,$welcome,strlen($welcome));    //写入一个socket
socket_close($socket);         //关闭socket

2个php测试文件
server.php

这里提供了在php中socket相关函数的一个实例,如创建Socket,接受一个socket连接
,写入一个Socket及初始化连接等操作,具体实例代码如下:复制代码 代码如下:$ip=”127.0.0.1″; //定义ip地址
$port=1000; //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
$bind=socket_bind; //绑定一个socket $listen=socket_listen;
//监听socket $msg=socket_accept; //接受一个socket连接
$welcome=”欢迎来到php服务/n”; //定义字符串
socket_write($msg,$welcome,strlen; //写入一个socket socket_close;
//关闭socket */ $ip=”127.0.0.1″; //定义ip地址 $port=1000; //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
socket_clear_error; //清空socket错误信息 socket_close; //关闭socket
/* */ $sockets=array(); //定义一个数组
/*建立一对socket,并存储在数组中*/
if(!socket_create_pair(af_unix,sock_stream,0,$sockets))
//如果socket没有成功创建 { echo socket_strerror; //输出错误信息 }
/*使用创建的socket收发信息*/
if(!socket_write($sockets[0],”abcdef123n”,strlen
//如果执行socket写失败{ cho socket_strerror; //输出错误信息 }
if(!$data=socket_read($sockets[1],strlen,php_binary_read))
//如果读取信息失败 { echo socket_strerror; //输出错误信息 } var_dump;
//输出socket数据信息 /*关闭socket*/ socket_close; //关闭socket1
socket_close; //关闭socket2 /* */ $ip=”127.0.0.1″; //定义ip地址
$port=1000; //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp); //创建socket
socket_set_nonblock; //设置不锁定状态 socket_connect; //初始化连接
socket_set_block; //锁定socket switch(socket_select,$w=array,$f=array
{ case 2: echo “连接被拒绝!n”; break; case 1: echo “成功连接n”; break;
case 0: echo “连接超时n”; break; } /* */
/*以下代码定义一个socket监听类*/ class socketlistener extends socket {
function __construct //定义__construct方法 {
$this->stream=@socket_create_listen; //打开端口接受连接 } function
isactive() //定义isactive方法 { if //如果有连接 { return true;
//返回真值 } else //无连接 { return false; //返回假值 } } }

/*

复制代码 代码如下:

希望本文所述对大家的php程序设计有所帮助。

*/

<?php
//phpinfo();
//确保在连接客户端时不会超时
set_time_limit(0);

$ip=”127.0.0.1″;          //定义ip地址
$port=1000;           //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp);  //创建socket
socket_clear_error($socket);        //清空socket错误信息
socket_close($socket);         //关闭socket

$ip = ‘127.0.0.1’;
$port = 1935;

/*

/*
 +——————————-
 *    @socket通信整个过程
 +——————————-
 *    @socket_create
 *    @socket_bind
 *    @socket_listen
 *    @socket_accept
 *    @socket_read
 *    @socket_write
 *    @socket_close
 +——————————–
 */

*/
$sockets=array();           //定义一个数组
/*建立一对socket,并存储在数组中*/
if(!socket_create_pair(af_unix,sock_stream,0,$sockets))   //如果socket没有成功创建
{
www.2979.com ,  echo socket_strerror(socket_last_error());      //输出错误信息
}
/*使用创建的socket收发信息*/
if(!socket_write($sockets[0],”abcdef123n”,strlen(“abcdef123n”)))  //如果执行socket写失败
{
  cho socket_strerror(socket_last_error());      //输出错误信息
}
if(!$data=socket_read($sockets[1],strlen(“abcdef123n”),php_binary_read)) //如果读取信息失败
{
  echo socket_strerror(socket_last_error());      //输出错误信息
}
var_dump($data);           //输出socket数据信息
/*关闭socket*/
socket_close($sockets[0]);         //关闭socket1
socket_close($sockets[1]);         //关闭socket2

/*—————-    以下操作都是手册上的    ——————-*/
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo “socket_create()
失败的原因是:”.socket_strerror($sock).”n”;
}

/*
*/

if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo “socket_bind() 失败的原因是:”.socket_strerror($ret).”n”;
}

$ip=”127.0.0.1″;          //定义ip地址
$port=1000;           //定义端口
$socket=socket_create(af_inet,sock_stream,sol_tcp);  //创建socket
socket_set_nonblock($socket);        //设置不锁定状态
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 “连接超时n”;
    break;
}

if(($ret = socket_listen($sock,4)) < 0) {
    echo “socket_listen()
失败的原因是:”.socket_strerror($ret).”n”;
}

/*

$count = 0;

*/

do {
    if (($msgsock = socket_accept($sock)) < 0) {
        echo “socket_accept() failed: reason: ” .
socket_strerror($msgsock) . “n”;
        break;
    } else {

/*以下代码定义一个socket监听类*/
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;           //返回假值
    }
  }
}

        //发到客户端
        $msg =”测试成功!n”;
        socket_write($msgsock, $msg, strlen($msg));

        echo “测试成功了啊金沙国际唯一官网网址 ,n”;
        $buf = socket_read($msgsock,8192);

       
        $talkback = “收到的信息:$bufn”;
【www.2979.com】           //定义端口,具体实例代码如下。        echo $talkback;

        if(++$count >= 5){
            break;
        };

   
    }
    //echo $buf;
    socket_close($msgsock);

} while (true);

socket_close($sock);
?>

client.php

复制代码 代码如下:

<?php
error_reporting(E_ALL);
set_time_limit(0);
echo “<h2>TCP/IP Connection</h2>n”;

$port = 1935;
$ip = “127.0.0.1”;

/*
 +——————————-
 *    @socket连接整个过程
 +——————————-
 *    @socket_create
 *    @socket_connect
 *    @socket_write
 *    @socket_read
 *    @socket_close
 +——————————–
 */

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
    echo “socket_create() failed: reason: ” . socket_strerror($socket)
. “n”;
}else {
    echo “OK.n”;
}

echo “试图连接 ‘$ip’ 端口 ‘$port’…n”;
$result = socket_connect($socket, $ip, $port);
if ($result < 0) {
    echo “socket_connect() failed.nReason: ($result) ” .
socket_strerror($result) . “n”;
}else {
    echo “连接OKn”;
}

$in = “Horn”;
$in .= “first bloodrn”;
$out = ”;

if(!socket_write($socket, $in, strlen($in))) {
    echo “socket_write() failed: reason: ” . socket_strerror($socket)
. “n”;
}else {
    echo “发送到服务器信息成功!n”;
    echo “发送的内容为:<font color=’red’>$in</font>
<br>”;
}

while($out = socket_read($socket, 8192)) {
    echo “接收服务器回传信息成功!n”;
    echo “接受的内容为:”,$out;
}

echo “关闭SOCKET…n”;
socket_close($socket);
echo “关闭OKn”;
?>

侦听

复制代码 代码如下:

# /usr/local/php/bin/php  /usr/local/apache2/htdocs/server.php

 

请求

复制代码 代码如下:

# /usr/local/php/bin/php  /usr/local/apache2/htdocs/client.php

www.2979.com 1

默认PHP是没有开启Socket的
 

复制代码 代码如下:

#cd ./ext/sockets/
# /usr/local/php/bin/phpize
# ./configure –enable-sockets
–with-php-config=/usr/local/php/bin/php-config
# make
# make install

php.ini修改配置
增加

复制代码 代码如下:

extension=sockets.so

重启apache

复制代码 代码如下:

# /usr/local/apache2/bin/apachectl restart

Windows下的配置
修改php.ini

复制代码 代码如下:

extension=php_sockets.dll

重启apache
cmd下起2个
php的安装目录

 

复制代码 代码如下:

C:/php/php.exe   F:web/server.php
C:/php/php.exe   F:web/client.php

您可能感兴趣的文章:

  • 总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
  • PHP URL地址获取函数代码(端口等)
    推荐
  • php实现TCP端口检测的方法
  • phpStudy配置多站点多域名和多端口的方法
  • php实现的ping端口函数实例
  • PHP如何获取当前主机、域名、网址、路径、端口等参数
  • Php做的端口嗅探器–可以指定网站和端口
  • php使用websocket示例详解
  • PHP检查端口是否可以被绑定的方法示例


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图