Я хочу передать файл на Socket-соединение, используя IP-адрес точки доступа Wi-Fi и MAC-адрес между двумя устройствами Android. Я могу передать текстовый файл с меньшим количеством чем 1 КБ, но не могут отправлять другие файлы расширения и большего размера с помощью сокета. Ниже приведен код для стороны отправителя: -Невозможно передать файлы большего размера через wi-fi hotspot в Android
Socket socket = null;
File file = new File(
Environment.getExternalStorageDirectory(),
"test.mp3");
byte[] bytes = new byte[(int) file.length()];
BufferedInputStream bis;
try {
socket = new Socket(dstAddress, dstPort);
bis = new BufferedInputStream(new FileInputStream(file));
bis.read(bytes, 0, bytes.length);
OutputStream os = socket.getOutputStream();
os.write(bytes, 0, bytes.length);
os.flush();
if (socket != null) {
socket.close();
}
final String sentMsg = "File Sent.....";
((Activity)context_con).runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context_con,
sentMsg,
Toast.LENGTH_LONG).show();
}});
}catch (ConnectException e) {
e.printStackTrace();
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Это код для приемника End: -
try {
File file = new File(
Environment.getExternalStorageDirectory(),
"test.mp3");
byte[] bytes = new byte[1024];
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(bytes, 0, bytes.length);
bos.write(bytes, 0, bytesRead);
bos.close();
socket.close();
final String sentMsg = "File Received...";
Main.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Main.this,
sentMsg,
Toast.LENGTH_LONG).show();
}});
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Я хочу передать большие файлы размером как mp3 файл, но он создает только размер файла 1Kb на конец приемника не с точным размером 2,1 МБ. Пожалуйста, помогите мне, где я ошибаюсь в этой реализации.
Вы считаете, что сжимаете их, а затем отправляете? – Olu
Взгляните на это [это] (http://www.helloandroid.com/tutorials/simple-connection-example-part-ii-tcp-communication) – Olu
Я не сжимаю файлы .. –