ホームページ > バックエンド開発 > PHPチュートリアル > PHP SCOKET は大きなファイルを送信し、受信側 JAVA_PHP チュートリアル

PHP SCOKET は大きなファイルを送信し、受信側 JAVA_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:53:09
オリジナル
1470 人が閲覧しました

クライアント (PHP):

send.php

[php]
$fp = fsockopen("127.0.0.1", 1024, $errno, $errstr,
);
$filename = '2012_07_23.zip' //送信するファイル
;
fwrite($fp, $filename . "rn"); // Java 側で .readLine() を使用します。最初の行はファイル名です。
$ハンドル = fopen($ファイル名, "r");
$contents = fread($ハンドル, ファイルサイズ($ファイル名)); //fwrite($fp,$contents); //小さいファイルはこのように送信できますが、大きいファイルはセグメントに分割する必要があります
$data_size = 1024 * 1 //毎回 1M; $data_count = ceil( strlen($contents) / $data_size ) //データはいくつあるか
for( $i = 0; $i {
$data = substr( $contents, $i * $data_size, $data_size ) //送信ソケットに書き込みます
fwrite($fp,$data); www.2cto.com
}

fclose($fp);
?>

サーバー (JAVA):
MyApp.java

[ジャワ]

java.io.* をインポートします。 java.net.* をインポートします。 java.util.Date をインポートします。 java.sql.* をインポートします。

パブリッククラス MyApp
{

プライベート int x


公開 MyApp()
{
x = 0; }

パブリック static void main(String args[]) {
int i = 1、ポート = 1024; サーバーソケットサーバー=null; ソケットクライアント = null; 試してみましょう{
サーバー=新しいサーバーソケット(ポート); System.out.println("Web サーバーはポートをリッスンしています" + server.getLocalPort()); for(;;){
client=server.accept(); //クライアントの接続リクエストを受け入れる
new WebThread(client,i).start(); i++;                                                                        }catch(Exception e){System.out.println(e);}
                                                                     }

WebThread.java
[ジャワ]
java.io.* をインポートします。 java.net.* をインポートします。 java.util.Date をインポートします。
クラス WebThread は Thread{
を拡張します Socket ソケット;//Web ブラウザに接続するためのソケット ワード
int カウンタ;//カウンタ
パブリック WebThread(Socket cl,int c){
ソケット=cl; カウンタ=c; }

public void run()//スレッド本体
{

試してみてください
                                                             DataInputStream 入力ストリーム = null; 試してみてください
                                                                inputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream())); }catch(例外 e)
                                                                                                                                       試してみてください
                                                                文字列 savePath = "E:\"; intbufferSize = 8192; byte[] buf = 新しいバイト[bufferSize]; 文字列ファイル名 = new String(); ファイル名 = inputStream.readLine(); String saveFilePath = new String(); saveFilePath = savePath + "\" + ファイル名
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(saveFilePath))));
System.out.println("ファイルの長い名前: " + ファイル名);                                                                                                                                                                                                                                                                                                                                                                                                                                   int 読み取り = 0; If (inputStream != null)
                                                                        read = inputStream.read(buf);                                                                              If (読み取り == -1) {
壊す;                                                                                                                                    //System.out.println(buf.toString());fileOut.write(buf, 0, read);                                                                              System.out.println("受信完了、ファイルは次の名前で保存されました" + saveFilePath + "n"); fileOut.flush(); fileOut.close(); inputStream.close(); } catch (例外 e) {
System.out.println("メッセージ受信エラー" + e.toString() + "n"); 戻る
                                                                       }catch(例外 e){
}
}
}

作者: junqing124




http://www.bkjia.com/PHPjc/478073.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/478073.html

クライアント(PHP): send.php [php] ?php $fp = fsockopen(127.0.0.1, $errno, $errstr, 10); //送信するファイル fwrite($) fp, $filename . rn) // ファイルを書き込みます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート