私はこれに永遠に費やしてきたので、うまくいかないようです。私は自分自身を教えていて、これに慣れていないので、是正の質問であれば私を許してください。私はAndroidから.Netサーバーにデータを送信しています。エンコード時にデータが壊れてしまいましたが、私はこれを知っていますが、修正する方法がわかりません。 Microsoft Async Sampleソケット上にファイルをエンコードする
私のAndroidのクライアントコードは次のとおりです:
try {
final Socket sock = new Socket();
final int timeOut = (int) TimeUnit.SECONDS.toMillis(5); // 5 sec wait period
sock.connect(new InetSocketAddress("localhost", 11000), timeOut);
if (sock.isConnected()==true){
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
String FileName = "myfile.jpg";
StringBuilder hd = new StringBuilder();
try {
String FilePath= Environment.getExternalStorageDirectory() + "/mydir/" + FileName;
File file = new File(FilePath);
FileInputStream is = new FileInputStream(file);
byte[] chunk = new byte[40960];
int chunkLen = 0;
while ((chunkLen = is.read(chunk)) != -1) {
//String str = new String(Base64.encodeToString(chunk, Base64.NO_WRAP));
//String str = new String(chunk, "ASCII");
String str = new String(chunk, "UTF-8");
out.write(str);
}
//out.write(hd.toString());
} catch (FileNotFoundException fnfE) {
// file not found, handle case
} catch (IOException ioE) {
// problem reading, handle case
}
out.write("<EOF>");
out.flush();
StringBuilder returnString = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
returnString.append(line).append('\n');
}
out.close();
in.close();
sock.close();
}else{
sock.close();
}
} catch (IOException e) {
e.printStackTrace();
}
あなたは私のコメントで見ることができるように、私はBASE64とUTF-8を試してみましたが、私はここで見つけるの.Net非同期サーバーのサンプルコードを使用しています。私はそれを行うときに私はサーバー上ですべての種類のエラーを取得します。 Base64を使用すると、Base64エラー(余分なパディングなど)にはなりません。 UTF8はファイルを書き込みますが、破損しています。 Bytes()= Convert.FromBase64String(FileData)のようにDimを使用しているが、予想通り、大きなファイルのためにAndroidにメモリエラーが発生するので、すべてBase64文字列として送信すると、チャンクが発生します。私はそれと一緒にいくつかのプレーンASCIIテキストを送信しているので、ASCII以外のものを解析してファイルを書き出します。私はスーパースタックしている、どんな助けも大いに感謝されるだろう。前もって感謝します。
これが機能するには、サーブが非公開のbase64デコードステップを実装する必要があります。 – EJP