0

私は長い間この質問に固執してきました。デバイス A からデバイス B にファイルを送信したい。ファイルの拡張子(「.jpg」)がわかっている場合は、ファイルをBに正常に送信でき、次のようにコードに記述します

try {
  ServerSocket serverSocket = new ServerSocket(PORT);
  Log.d(WiFiDirectActivity.TAG, "Server: Socket opened");
  Socket client = serverSocket.accept();
  Log.d(WiFiDirectActivity.TAG, "Server: connection done");

  final File f = new File(Environment.getExternalStorageDirectory() + "/"    
                + context.getPackageName() +"/wifip2pshared-" 
                            + System.currentTimeMillis() +".jpg");

  File dirs = new File(f.getParent()); 
  if (!dirs.exists()) 
      dirs.mkdirs(); 
  f.createNewFile(); 

  Log.d(WiFiDirectActivity.TAG, "server: copying files " + f.toString());
  InputStream inputstream = client.getInputStream();
  copyFile(inputstream, new FileOutputStream(f));
  serverSocket.close();
  server_running = false;
  return f.getAbsolutePath();       
} 
catch (IOException e) {
  Log.e(WiFiDirectActivity.TAG, e.getMessage());
  return null;
}

問題は、いくつかの種類のファイル (例: ".jpg"、".mp3"、".txt") があることです。各ファイルの種類を区別して、拡張子を含むファイル名全体を送信するにはどうすればよいですか (例: ブルーノ・マーズ- Lazy song.mp3) ではなく、ファイル名を割り当てて元のコードを入力します。前もって感謝します!

4

1 に答える 1

0

ファイル名とコンテンツの間の区切り文字に関して、ソケットクライアントとサーバーの間で契約を作成する必要があります。たとえば、ファイル名に続け|てファイルの内容を送信できます。サーバー側では、取得するまで読み取ります|。これがファイル名です。次に、ファイルの内容を読み取ります。

于 2013-05-28T14:53:43.090 に答える