Почему на одном из моих устройств не обнаруживается сокетное соединение? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь разработать одноранговое приложение совместного использования в 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);
    }

игнорирует ошибки, я удалил много кода. Проблема повторяется каждый раз с этим устройством. Я мало знаю о сокетах. Помогите мне.

Спасибо.

...