Android Nougat: исключение тайм-аута сокета при соединении через интерфейс ppp0 - PullRequest
0 голосов
/ 30 марта 2019

Получение тайм-аута соединения при соединении через сотовую сеть (интерфейс ppp0).

Test code snippt for reference :

Socket sock = new Socket();

//set traffic class to 4
if(isConnectOverCellular)
    sock.setTrafficClass(4); 

sock.bind(new InetSocketAddress(localAddress,0));
sock.connect(remoteInetAdddress,port);  // This connect method throwing connection timeout
sock.close();

Шаги:

Интерфейс wlan0 и ppp0 2 доступны на моем устройстве.

  1. Wlan0: я хочу сохранить интерфейс wlan0 в качестве интерфейса по умолчанию для передачи всех запросов через него.

  2. ppp0: когда я устанавливаю определенный класс трафика(например, 4) из кода, затем я передаю запрос через интерфейс ppp0.

Чтобы добиться этого, я добавил ниже запись в моей таблице ip.

// Удаленный маршрут по умолчаниюдля ppp0

ip route del default dev ppp0

// Добавлен маршрут ppp0 по умолчанию для tos (тип сервиса) 4.

ip route добавить значения по умолчанию 4 dev ppp0

Из кода Java добавьте эту строку "java socket.setTrafficClass (4)", чтобы установить класс трафика сокета для выбора интерфейса ppp0, когда класс трафика установлен на 4.

Когда оба интерфейса (wlan0 и ppp0), тогда этот фрагмент кода (операция подключения через сокет) должен работать на Nougat для Android, но это не работает и выдает исключение тайм-аута соединения.

Тот же код работает на kitkat для Android.

Примечание: еще одно замечание: когда интерфейс wlan0 не работает, то также без проблем работает работа с сокетом.

Может ли кто-нибудь помочь, пожалуйста, что за изменение, внесенное в Android Nougut, которое вызывает это?выпуск.

Заранее спасибо.

Спасибо, Йогеш Дэйв

...