Php服务器Socket测试

测试环境: 本地xampp服务器环境(环境可能需要配置,可以查找一些相关文档)


本地启动服务端:


模拟tcpip客户端:


<?php
 
set_time_limit ( 0 );  // 确保在连接客户端时不会超时
$ip = '10.10.20.19';    //!!本地自己电脑IP地址,确保正确,否则会出错
$port = 6000;
 
/*
 * +-------------------------------
 * @socket通信整个过程
 * +-------------------------------
 * @socket_create
 * @socket_bind
 * @socket_listen
 * @socket_accept
 * @socket_read
 * @socket_write
 * @socket_close
 * +--------------------------------
 */
/* ---------------- 以下操作都是手册上的 ------------------- */
 
if (($sock = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP )) < 0)
{
    //创建一个Socket链接
    echo "socket_create() failed: reason: " . socket_strerror ( $sock ) . "\n";
}
 
if (($ret = socket_bind ( $sock, $ip, $port )) < 0)
{
    //绑定Socket到端口
    echo "socket_bind() failed: reason: " . socket_strerror ( $ret ) . "\n";
}
if (($ret = socket_listen ( $sock, 4 )) < 0)
{ 
    //开始监听链接链接
    echo "socket_listen() failed: reason: " . socket_strerror ( $ret ) . "\n";
}
 
 
//阻塞等待处理
do
{
    if (($msgsock = socket_accept ( $sock )) < 0)
    { 
        //堵塞等待另一个Socket来处理通信
        echo "socket_accept() failed: reason: " . socket_strerror ( $msgsock ) . "\n";
        break;
    }
    else
    {
        $buf = socket_read ( $msgsock, 8192 );    //获得客户端的输入
        socket_write ( $msgsock, $buf, strlen ( $buf ) );   //回显
        $talkback = "Recieve buffer: $buf\n";   //服务器打印信息
        echo $talkback;
    }
    socket_close ( $msgsock );
} while ( true );
socket_close ( $sock );
 
?>

猜你喜欢

转载自blog.csdn.net/sinat_23338865/article/details/80167763
今日推荐