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”)如何区分每个文件的类型并发送包含扩展名的整个文件名(例如:Bruno Mars- Lazy song.mp3)而不是分配文件名并输入我的原始代码。提前致谢!

4

1 回答 1

0

您需要在套接字客户端和服务器之间就文件名和内容之间的分隔符创建一个合同。例如,您可以发送文件名,后跟 a |,然后是文件内容。在服务器端,您一直阅读,直到获得|,这是您的文件名。然后读取文件的内容。

于 2013-05-28T14:53:43.090 回答