【问题标题】:Socket send data entered in Terminal在终端中输入的套接字发送数据
【发布时间】:2016-10-29 12:33:59
【问题描述】:

我想创建一个 Socket 来监听连接并将我在终端中输入的数据(想使用 php script.php 运行它)发送给所有客户端

还有什么方向吗?

最好的问候, 杰克

【问题讨论】:

  • 对于 PHP 中的 websockets,最好使用已经完成的东西。看看 Ratchet socketo.me 它是一个 websockets 库。

标签: php linux sockets terminal


【解决方案1】:

此脚本执行您想要的操作,还将客户端发送的数据写入您的终端,使用 php script.php 运行:

<?php

$port = 12345;
$server = stream_socket_server("tcp://localhost:$port", $errno, $errstr);
if (!$server) die("$errstr (errno $errno)\n");

$s = array(STDIN, $server); // initially wait for terminal input or connections
while ($r = $s and stream_select($r, $n=NULL, $n=NULL, NULL))
foreach ($r as $stream)
    if ($stream == STDIN)   // terminal input
    {
        $data = fgets(STDIN);
        foreach (array_slice($s, 2) as $client)     // clients from index 2 on
            fputs($client, $data);
    }
    else
    if ($stream == $server) // new client
        $s[] = stream_socket_accept($server, -1);   // add it to $s (index 2 on)
    else                    // data from a client
        if (!fputs(STDOUT, fgets($stream)))
        {
            fclose($stream);
            array_splice($s, array_search($stream, $s), 1); // remove client
        }

?>

【讨论】:

    【解决方案2】:

    以下程序将帮助您发送和接收数据。

    error_reporting(E_ALL | E_STRICT);
    
    
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    
    
    $from = *Destination IP*;
    $port = 50001;
    $msg = "@SET0123014002";
    $len = strlen($msg);
    
    //for sending message
    socket_sendto($socket, $msg, 0, 0, $from, $port);
    
    print "Time: " . date("%r") . "\n";
    
    socket_close($socket);
    
    echo "$msg and $len was Sent<br>";
    
    $socket1 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    
    //to Receive data from terminal.
    socket_bind($socket1, '*Your System IP*', 50001);
    socket_recvfrom($socket1, $buf, 12,0, $from, $port);
    
    echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 2012-02-29
      • 2016-03-19
      • 2018-05-30
      • 1970-01-01
      • 2021-09-15
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多