Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP通过TCP套接字发送文件_Php_Sockets_Tcp - Fatal编程技术网

PHP通过TCP套接字发送文件

PHP通过TCP套接字发送文件,php,sockets,tcp,Php,Sockets,Tcp,我正在尝试使用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);

我正在尝试使用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);
}
$fp=fsockopen(“127.0.0.1”,80,$errno,$errstr,30);
如果(!$fp){
回显“$errstr($errno)
\n”; }否则{ fwrite($fp,“您的消息”); 而(!feof($fp)){ echo fgets(fp,128美元); } fclose($fp); }
我不确定如何发送BIN文件,在测试它时,页面只是无限循环


有人能帮我吗?是否有更好的方法使用PHP通过TCP发送文件?

您需要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);
}
$fp=fsockopen(“127.0.0.1”,80,$errno,$errstr,30);
$fb_bin=fopen(“myfile.bin”,“rb”);
//TODO错误测试$fp\U bin
如果(!$fp){
回显“$errstr($errno)
\n”; }否则{ //fwrite($fp,“您的消息”); 而(!feof($fp_bin)){ fwrite($fp,fread($fp_-bin,128));/?使用较大的值 //TODO错误测试读写操作 } fclose($fp); fclose($fp_-bin); }
您打开了一个文件资源(要写入的套接字),但您的循环看起来像是从另一个文件(可能是bin文件)读取。使用fopen()打开bin文件,并在循环中将内容写入套接字。@RichGoldMD我正在试图理解你的意思。你有没有给我一个代码示例,这样我就可以完全理解你想要指出的内容?请看下面我的答案。我将尝试一下,看看我是否可以进一步调试这个,当然会让你知道。你运气好吗?