首页 > 开发 > PHP > 正文

用PHP开发C/S结构(一个简单的例子)

2024-05-04 22:56:06
字体:
来源:转载
供稿:网友
菜鸟学堂:
服务器
<?php
// server
// 设置错误处理
error_reporting (e_all);
// 设置运行时间
set_time_limit (0);
// 起用缓冲
ob_implicit_flush ();
$ip = "127.0.0.1";        // ip地址
$port = 1000;             // 端口号

$socket = socket_create (af_inet, sock_stream, sol_tcp);       // 创建一个socket
if ($socket)
    echo "socket_create() successed!/n";
else
    echo "socket_create() failed:".socket_strerror ($socket)."/n";

$bind = socket_bind ($socket, $ip, $port);              // 绑定一个socket
if ($bind)
    echo "socket_bind() successed!/n";
else
    echo "socket_bind() failed:".socket_strerror ($bind)."/n";

$listen = socket_listen ($socket);                 // 间听socket
if ($listen)
    echo "socket_listen() successed!/n";
else
    echo "socket_listen() failed:".socket_strerror ($listen)."/n";

while (true)
{
    $msg = socket_accept ($socket);               // 接受一个socket
    if (!$msg)
    {
        echo "socket_accept() failed:".socket_strerror ($msg)."/n";
        break;
    }
    $welcome = "welcome to php server!/n";
    socket_write ($msg, $welcome, strlen ($welcome));
    while (true)
    {
        $command = strtoupper (trim (socket_read ($msg, 1024)));
        if (!$command)
            break;
        switch ($command)
        {
            case "hello":
                $writer = "hello everybody!";
                break;
            case "quit":
                $writer = "bye-bye";
                break;
            case "help":
                $writer = "hello/tquit/thelp";
                break;
            default:
                $writer = "error command!";
        }
        socket_write ($msg, $writer, strlen ($writer));
        if ($command == "quit")
            break;
    }
    socket_close ($msg);
}

socket_close ($socket);                   // 关闭socket
?>


客户端
<?php
// client
// 设置错误处理
error_reporting (e_all);
// 设置处理时间
set_time_limit (0);

$ip = "127.0.0.1";       // ip 地址
$port = 1000;            // 端口号

$socket = socket_create (af_inet, sock_stream, sol_tcp);   // 创建一个socket
if ($socket)
    echo "socket_create() successed!/n";
else
    echo "socket_create() failed:".socket_strerror ($socket)."/n";

$conn = socket_connect ($socket, $ip, $port);       // 建立socket的连接
if ($conn)
    echo "success to connection![".$ip.":".$port."]/n";
else
    echo "socket_connect() failed:".socket_strerror ($conn)."/n";

echo socket_read ($socket, 1024);   

$stdin = fopen ('php://stdin', 'r');
while (true)
{
    $command = trim (fgets ($stdin, 1024));
    socket_write ($socket, $command, strlen ($command));
    $msg = trim (socket_read ($socket, 1024));
    echo $msg."/n";
    if ($msg == "bye-bye")
        break;
}
fclose ($stdin);
socket_close ($socket);
?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表