2017-08-27 204 views
1

我想通過使用PHP的TCP套接字發送.BIN文件。這是我的:通過TCP套接字發送文件

$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文件,並在測試時,頁面無限循環。

有人可以幫助我嗎?有沒有更好的方式通過TCP使用PHP發送文件?

+0

你打開一個文件資源(套接字寫入),但你的循環看起來像你從另一個讀取(推測是bin文件)。使用fopen()打開bin文件,並在循環中將內容寫入套接字。 – RichGoldMD

+0

@RichGoldMD我想了解你的意思。你有沒有一個編碼例子,所以我可以完全理解你想要指出什麼? – Mitch

+0

在下面看到我的回答 – RichGoldMD

回答

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); 
} 
+0

我會試一試,看看我能否進一步調試,當然讓你知道。 – Mitch

+0

你有沒有運氣? – RichGoldMD