Я пытаюсь разработать одноранговое приложение совместного использования в android. После того, как два устройства были подключены через Wi-Fi, я попытался отправить данные между двумя устройствами с помощью сокетов. Из моих (oneplus 6 в качестве сервера и отправителя) и (Samsung galaxy j7 в качестве клиента и получателя) данные передаются без проблем.
Но если я сделаю samsung j7 в качестве отправителя, сервер и oneplus6 в качестве получателя, клиент, соединение сокета не обнаруживается ни на что. Это потому, что другое устройство медленно делает запрос? почему это могло произойти (я использую одну и ту же конфигурацию в обоих случаях) ..
if (!isReceiver) {
ServerSocket serverSocket = new ServerSocket(5000);
final Socket socket = serverSocket.accept();
inputStreamList.observeForever(new Observer<List<InputStream>>() {
@Override
public void onChanged(final List<InputStream> inputStreamList) {
MainActivity.this.inputStreamList.removeObserver(this);
final Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
Log.d("size1", "f");
final BufferedOutputStream dataOutputStream = new BufferedOutputStream(socket.getOutputStream());
InputStream e = inputStreamList.get(0);
byte[] bytes = new byte[1000];
int i = 0;
while ((i = e.read(bytes)) != -1) {
Log.d("size1writing", String.valueOf(i));
dataOutputStream.write(bytes, 0, i);
}
}
});
thread1.start();
});
}
// клиент
if (isReceiver) {
Log.d("sizeserve", "client");
Socket socket = new Socket();
socket.connect(new InetSocketAddress(wifiP2pInfo.groupOwnerAddress, 5000));
BufferedInputStream dataInputStream = new BufferedInputStream(socket.getInputStream(), 2048);
File file = new
File(getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "1.apk");
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file);
int i = 0;
byte[] b = new byte[2048];
while ((i = dataInputStream.read(b)) != -1) {
fileOutputStream.write(b, 0, i);
}
игнорирует ошибки, я удалил много кода. Проблема повторяется каждый раз с этим устройством. Я мало знаю о сокетах. Помогите мне.
Спасибо.