httpソケットプログラムを使用して、Androidデバイスから別のデバイスにファイルを送信するアプリケーションを作成しています。これがコードです、サーバー側
try {
ServerSocket servsock = new ServerSocket(4042);
File myFile = new File(pathToFile);
while (true) {
Socket sock = servsock.accept();
byte[] mybytearray = new byte[(int) myFile.length()];
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
OutputStream os = sock.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
bis.close();
sock.close();
}
} catch (Exception e) {
Toast.makeText(MyActivity.context,
"Failed to send file!", Toast.LENGTH_SHORT)
.show();
}
そしてクライアント側は、
try {
Socket sock = new Socket(ipAddress, 4042);
byte[] mybytearray = new byte[1024];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("/mnt/sdcard/"
+fileName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
bos.close();
sock.close();
} catch (Exception e) {
Toast.makeText(MyActivity.context,
"Failed to download the file!", Toast.LENGTH_LONG)
.show();
}
これらのコードは両方とも AsyncTask クラスにあります。しかし、クライアント側は常にタイムアウトしています。これは、Android でインターネット経由でファイルを転送する正しい方法ですか? もしそうなら、私が間違っているところを教えてください。前もって感謝します。
編集:ここでは、ファイルをサーバー側で送信する必要があり、クライアントはそのファイルをダウンロードしようとしています。