Witam Naszym ostatecznym celem jest przesyłanie plików za pomocą Wi-Fi Direct API w dwóch urządzeniach. Gdy urządzenie działa jako klient, działa jak serwer, tak jak w wersji demonstracyjnej wifi direct sdk. W tym celu, Tworzenie gniazda od strony klienta za pomocą portu serwera i adresu hosta. Chcę przesłać wiele plików. Po stronie odbiorcy, akceptując połączenie z gniazdem klienta, muszę utworzyć plik z nazwą pliku, który został wysłany ze strony klienta. Ale nie znam nazwy pliku od strony serwera.Jak znaleźć nazwę pliku, który jest przesyłany w trybie bezpośrednim Wi-Fi w systemie Android?
Jak wysłać nazwę pliku za pomocą połączenia z gniazdem dla tego trybu bezpośredniego transferu w sieci WiFi w celu przesyłania wielu plików.
Tworzenie gniazdo od strony klienta za pomocą portu serwera i adres hosta:
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");
}
Akceptowanie klienta gniazdo podłączenie boczne serwera forma:
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();
naprawdę uderzyło w sprawie wyrażenia nazwę pliku u po stronie odbiorcy podczas tworzenia pliku. Czy istnieje sposób, aby wysłać nazwę pliku wraz z tym. Proszę, pomóżcie mi w tej sprawie. Z góry dziękuję.
Jeśli mój sposób robienia tego jest odpowiedni do twoich potrzeb, uprzejmie oznacz go jako zaakceptowaną odpowiedź, tak aby mógł być także odniesieniem dla innych. Dzięki. – Sebastiano