Я хочу создать оффлайн многопользовательскую игру для Android, поэтому мне нужна надежная p2p-связь между устройствами. Соединения Google поблизости работают нормально, но я обнаружил одну проблему. Настройка стандартная — устройство A объявляет, устройство D обнаруживает и подключается к A. Затем D отключается, снова обнаруживает и снова подключается. После одной-десяти итераций D все еще может подключаться к A и получать данные от A, но больше не может отправлять данные. Я вызываю sendPayload
с Payload.fromBytes
, получаю onSuccessCallback
, но A не получает эту полезную нагрузку. Позже D получает onPayloadTransferUpdate
с кодом состояния 2. Дальнейшие переподключения не решают проблему. Единственное, что надежно решает проблему, это перезагрузка.
Некоторые журналы: 03-21 12:20:25.827 30317-30317/com.alienff.ntest I/Log: [21.03.2018 12:20:25.827] [main] MainActivity: sending payload -5864147190526311071
03-21 12:20:25.841 30317-30317/com.alienff.ntest I/Log: [21.03.2018 12:20:25.841] [main] MainActivity: payload cent
...
03-21 12:21:16.925 3066-3215/? D/WifiStateMachine: Current network is: "
___mm___
", ID: 0 03-21 12:21:16.926 3066-3215/? D/WifiStateMachine: Текущая сеть все еще квалифицирована из-за интенсивного трафика, txSuccessRate=2.1973258256066233 rxSuccessRate=0.0 03-21 12:21: 16.926 3066-3215/?D/WifiStateMachine: Текущая сеть 5ГГц, выручайте... 03-21 12:21:17.408 4049-4049/?D/io_stats: !@ 179,0 r 906136 23065676 w 370340 7270584 5 d 4670584 d 4670584 2438912 f 147311 147270 iot 680350 657112 th 51200 0 0 pt 0 inp 0 0 55938.769 03-21 12:21:17.571 10176-30596/? - метаданные {service_id: 0} 03-21 12:21:17.576 10176-30596/?W/NearbyConnections: Неожиданный вызов PhysicalConnectionClosed() для среды WIFI_LAN без соответствующего установленного соединения, которое было ранее открыто. -- metadata{service_id: 0} 03-21 12:21:17.579 10176-30596/?W/NearbyConnections: NearbyRecorder не ожидал больше активных физических подключений, прежде чем регистрировать это подключение конечной точки. -- метаданные { service_id: 0 } 03-21 12:21:17.585 3336-3929/? E/BluetoothRemoteDevices: setRfcommConnected false 03-21 12:21:17.586 30317-30317/com.alienff.ntest I/Log: [21.03.2018 12:21:17.586] [main] MainActivity: onPayloadTransferUpdate. endpointId: 7oRz payloadId: -5864147190526311071 bytesTransferred: 0 status: 2 03-21 12:21:17.597 30317-30317/com.alienff.ntest I/Log: [21.03.2018 12:21:17.596] [main] MainActivity: onDisconnected : 7oRz
Знаете ли вы, как сделать так, чтобы близлежащие соединения Google надежно переподключались? Благодарю вас!