php程序吧 关注:1,164贴子:235
  • 2回复贴,共1

用PHP开发C/S结构

只看楼主收藏回复

用PHP开发C/S结构


1楼2019-11-06 15:07回复
      <?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);
    ?>


    2楼2019-11-06 15:07
    回复


      3楼2019-11-06 15:07
      回复