Ciao Il mio obiettivo finale è quello di trasferire i file utilizzando api diretta wifi in Android tra i due dispositivi. Una volta che il dispositivo funge da client, un altro funge da server come nella demo sdk diretta wifi. Per questo, creare un socket dal lato client usando la porta del server e l'indirizzo dell'host. Voglio trasferire più file. Nel lato ricevente mentre accetto la connessione socket client, devo creare il file con il nome file del file inviato dal lato client. Ma non conosco quel nome di file dal lato server.Come trovare il nome del file di un file che viene trasferito tramite la modalità wifi diretta in Android?
Così come inviare nome del file utilizzando connessione socket per questa modalità trasferimento diretto WiFi per il trasferimento di file multipli.
Creazione presa dal lato client utilizzando la porta del server e l'indirizzo host:
fileUris = intent.getExtras().getParcelableArrayList(EXTRA_STREAM);
String host = intent.getExtras().getString(
EXTRAS_GROUP_OWNER_ADDRESS);
Socket socket = new Socket();
int port = intent.getExtras().getInt(EXTRAS_GROUP_OWNER_PORT);
try {
Log.d(WifiDirectActivity.TAG, "Opening client socket - ");
socket.bind(null);
socket.connect((new InetSocketAddress(host, port)),
SOCKET_TIMEOUT);
Log.d(WifiDirectActivity.TAG,
"Client socket - " + socket.isConnected());
OutputStream stream = socket.getOutputStream();
ContentResolver cr = context.getContentResolver();
InputStream is = null;
for (int i = 0; i < fileUris.size(); i++) {
Uri uri = fileUris.get(0);
try {
is = cr.openInputStream(Uri.parse(uri.toString()));
} catch (FileNotFoundException e) {
Log.d(WifiDirectActivity.TAG, e.toString());
}
DeviceDetailFragment.copyFile(is, stream);
Log.d(WifiDirectActivity.TAG, "Client: Data written");
}
Accettare client presa lato server modulo di connessione:
ServerSocket serverSocket = new ServerSocket(8988);
Log.d(WifiDirectActivity.TAG, "Server: Socket opened");
Socket client = serverSocket.accept();
Log.d(WifiDirectActivity.TAG,
"Server: connection done with client");
final File f = new File(
Environment.getExternalStorageDirectory() + "/"
+ context.getPackageName() + "/wifip2pshared-"
+ "sample");
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();
davvero colpito a dare il nome del file in lato ricevitore alla creazione del file. C'è un modo per inviare il nome del file insieme a quello. per favore aiutami su questo. Grazie in anticipo.
Se il mio modo di fare non soddisfa le tue necessità, gentilmente segnalarlo come la risposta accettata, in modo che possa essere un riferimento per gli altri pure. Grazie. – Sebastiano