zoukankan      html  css  js  c++  java
  • PHP socket网络编程

    SERVER端

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

    //设置IP和端口号
    $address='127.0.0.1' ;
    $port=2009 ;    //调试的时候,可以多换端口来测试程序!

    //创建一个SOCKET
    if (($sock=socket_create (AF_INET,SOCK_STREAM,SOL_TCP ))<0 )
    {
    echo"socket_create() 失败的原因是:".socket_strerror ($sock )."<br>" ;
    }

    //绑定到socket端口
    if (($ret=socket_bind ($sock,$address,$port ))<0 )
    {
    echo"socket_bind() 失败的原因是:".socket_strerror ($ret )."<br>" ;
    }

    //开始监听
    if (($ret=socket_listen ($sock,4 ))<0 )
    {
    echo"socket_listen() 失败的原因是:".socket_strerror ($ret )."<br>" ;
    }

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

    //发到客户端
    $msg="<font color=red>欢迎进入服务器!</font><br>" ;
    socket_write ($msgsock,$msg,strlen ($msg ));

    echo"读取客户端发来的信息<br>" ;
    $buf=socket_read ($msgsock,8192 );


    $talkback="收到的信息:$buf<br>" ;
    echo$talkback ;
    /* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
         {
          echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
         }
         else
         {
          echo "发送成功";
         }*/


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

    socket_close ($sock );
    ?>




    CLIENT端


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

    $service_port=2009 ;
    $address="127.0.0.1" ;


    $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"试图连接 '$address' 端口 '$service_port'...<br>" ;
    $result=socket_connect ($socket,$address,$service_port );
    if ($result<0 )
    {
    echo"socket_connect() failed.\nReason: ($result) ".socket_strerror ($result ) ."\n" ;
    }
    else
    {
    echo"连接OK<br>" ;
    }

    $in="Hello\r\n" ;
    $in.="我是Chester\r\n" ;
    $out='' ;
    $out1='' ;


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

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


    echo"关闭SOCKET...<br>" ;
    socket_close ($socket );
    echo"关闭OK<br>" ;
    ?>

  • 相关阅读:
    [资料]PHP中的__autoload
    [转]php 5.3新增的闭包语法介绍function() use() {}
    [资料]PHP中的ReflectionClass
    [资料]PHP中的命名空间
    Mysql Event
    PHP转换成对像
    [转]Win7自带便签怎么恢复内容
    [转]Windows7便笺妙用
    [转]ASP.NET下MVC1.0>2.0>3.0>4.0
    PHP类动态属性问题
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429568.html
Copyright © 2011-2022 走看看