アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaのファイルサイズの転送で困っています。
最初にファイルサイズを転送し、あらかじめ受信サイズを知らせておきたいのですが。。。うまくいきません。
送信側では最初にファイルサイズ4バイト(intサイズ)送信し、サイズを書き込む。
受信側では4バイト読み込み、ファイルサイズ分のバッファを用意する。
どうすれば出来るでしょうか。おねがいします。

A 回答 (3件)

WEB?


HTML(もしくはJSP)から<input type="text">にファイルサイズを入力して、submitして、Servletでその値を取得するってことですか?
それとも、<input type="file">にファイル名を入力して、submitして、Servletでファイルからファイルサイズを取得するってことですか?

ファイルのアップロードでしたら、検索すれば参考になるものがたくさん見つかりますよ。

http://www.google.co.jp/search?hl=ja&q=java+%E3% …

とりあえず、どういう状況で何がどううまくいかないのか不明点が多すぎます。
補足をお願いします。

この回答への補足

ソケット通信です。
サーブレット、HTMLは関係ないです。
C言語だと、以下のようなことをしたいのです。
行いたい部分だけ書きます。
---
書き込み側
 int file_size = 1024;
 write(fd, (const void *)&file_size, sizeof(int));
読み込み側
 int file_size;
 read(fd, (void*)&file_size, sizeof(int));
---
Javaではどうすれば出来るでしょうか。
おねがいします。

補足日時:2007/01/18 13:03
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

補足しました。
Cで例を書きましたが、
お分かりになるならご教授ください。

お礼日時:2007/01/18 13:14

いくつかの実装方法がありますが。

。。
以下に送受信のコードの例を示します。
(1~10までの数値を送信し、受信側で表示する。)
ソケットの作成はできているということなので、データの送受信の部分のみ書いておきます。

sizeが送受信されるデータのサイズ、dataが実際に送受信されるデータです。
実際に使用する場合はsizeやdataを適切に操作してください。

// 送信側
// Socket socket をここまでに作成しておく
// これを使用するメソッドはIOExceptionをスローするようにしておく。

DataOutputStream out;

try {
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {
throw ex;
}

int size = 10;
byte[] data = new byte[size];

for (int i = 0; i < data.length; i++)
data[i] = (byte)i;

out.writeInt(size);
out.write(data);
out.flush();


// 受信側
// Socket socket をここまでに作成しておく
// これを使用するメソッドはIOExceptionをスローするようにしておく。

DataInputStream in;

try {
in = new DataInputStream(socket.getInputStream());
} catch (IOException ex) {
throw ex;
}

try {
int size = in.readInt();
System.out.println("Data size: " + size);

byte[] data = new byte[size];
in.read(data);

for (int i = 0; i < data.length; i++)
System.out.print(", " + data[i]);
} catch (IOException ex) {
throw ex;
}
    • good
    • 0

参考URLに書いてあるようなことですか?


やったことないので、あまりお力になれず申し訳ありませんが、
送信側から受信側に送るデータの「最初の4バイト」はファイルサイズ
と決めて、最初の4バイトを読み込んで、それからその後を読み込めば良いのではないでしょうか。

参考URL:http://www.hellohiro.com/socket.htm

この回答への補足

回答1の補足に書いたCのコードを、そのままJavaコードに落とすことが出来ないでしょうか。
このようなことをしたい理由は、Javaプログラムとphpプログラム間でソケット通信を行いたいからでして。
byte転送なら確実かと思って質問しました。

補足日時:2007/01/18 14:50
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

参照していただいたURLはJAVAで、ソケットプログラムの作り方ですね。
だけど、ソケットプログラムはすでに作っていますので…
でも参考になりました!

お礼日時:2007/01/18 14:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!