【问题标题】:PHP Send File over TCP SocketPHP 通过 TCP 套接字发送文件
【发布时间】:2018-02-05 04:27:01
【问题描述】:

我正在尝试使用 PHP 通过 TCP 套接字发送 .BIN 文件。这就是我所拥有的:

$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);

if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "You message");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

我不确定如何发送 BIN 文件,并且在测试它时,页面只是无限循环。

有人可以帮助我吗?有没有更好的方法使用 PHP 通过 TCP 发送文件?

【问题讨论】:

  • 您打开了一个文件资源(要写入的套接字),但您的循环看起来像是从另一个(可能是 bin 文件)读取。使用 fopen() 打开 bin 文件,并在循环中将内容写入套接字。
  • @RichGoldMD 我试图理解你的意思。你有一个编码示例给我,这样我就可以完全理解你要指出的内容?
  • 在下面查看我的答案

标签: php sockets tcp


【解决方案1】:

您需要2个文件资源,但您只打开了出站的一个:

$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);
$fb_bin = fopen("myfile.bin", 'rb'); 
// TODO error test $fp_bin

if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    // fwrite($fp, "You message");
    while (!feof($fp_bin)) {
        fwrite($fp, fread($fp_bin, 128)); // ? use a larger value
        // TODO Error test the read and write operations
    }
    fclose($fp);
    fclose($fp_bin);
}

【讨论】:

  • 我会试一试,看看是否可以进一步调试,当然会让你知道。
  • 你运气好吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-28
  • 2017-03-14
  • 2015-01-30
  • 2021-09-15
  • 2011-12-03
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多