【问题标题】:Sending TCP Data with PHP使用 PHP 发送 TCP 数据
【发布时间】:2017-09-14 12:11:15
【问题描述】:

我已经对此进行了一些研究,但仍然不太了解它是否可能。

我有一个小型网络服务器,位于我的专用网络上。我想创建一个 php 脚本,它将连接到专用网络上的 telnet 服务器并每 30 秒发送一次文本。

显然,简单的部分是文本和时间,但由于某种原因,连接到 TCP 端口 23 并发送文本字符串似乎更难。最好的方法是什么?

【问题讨论】:

  • php 手册中有一个example 用于套接字。
  • 我试过了。我可以连接并显示连接,但我似乎无法向设备发送文本字符串。

标签: php tcp telnet


【解决方案1】:

使用 PHP 套接字:

<?php
while(true){
    sleep 30;
    $fp = fsockopen("www.example.com", 23, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        fwrite($fp, "The string you want to send");
        while (fgets($fp, 128)) {
            echo fgets($fp, 128); // If you expect an answer
        }
        fclose($fp); // To close the connection
    }
}
?>

【讨论】:

  • 这意味着直到文件结束:)
  • 你会这么想,但这是错误的。它在文件结束后执行额外的fgets()。阅读链接的问题。你应该使用while (fgets($fp, 128))
  • 我认为while (fgets($fp, 128)) 编辑是错误的。 while 将读取数据,然后 echo 将读取更多数据,而不是再次读取相同的数据。你应该读入一个缓冲区并回应它,借用链接的问题......while (($buffer = fgets($fp, 128)) !== false) { echo $buffer; }
猜你喜欢
  • 2016-04-27
  • 2012-03-14
  • 2015-04-10
  • 2020-09-15
  • 2015-08-15
  • 2022-11-12
  • 2014-09-06
  • 2015-04-16
  • 2016-02-19
相关资源
最近更新 更多