Czy jest możliwe, aby aplikacja na nowoczesnym telefonie z Androidem określiła, na którym nośniku należy nawiązać połączenie TCP?
tzn. chciałbym otworzyć połączenie z serwerem za pomocą Wi-Fi i połączenie z (ewentualnie innym) serwerem za pomocą GPRS.
Zgaduję, że musiałbym wyliczyć interfejsy w telefonie i podać adresy źródłowe połączeń, a także docelowe porty i adresy.
Czy istnieje sposób użycia „SO_BINDTODEVICE” w Androidzie?
Odpowiedzi:
1 dla odpowiedzi № 1Nic o tym nie wiem SO_BINDTODEVICE
, ale od Lollipop istnieją dedykowane interfejsy API Androida do robienia tego, co chcesz.
Możesz użyć Menedżer połączeń wyliczyć dostępne sieci, a następnie uzyskać SocketFactory których gniazda będą komunikować się tylko przez wybraną sieć.
0 dla odpowiedzi nr 2
TCP nie martwi się o środek komunikacji. Jest niezależny od wewnętrznych mechanizmów warstwy IP i Ethernet. Myślę więc, że TCP nie pomoże ci rozróżnić GPRS i Wi-Fi.
Możesz powiązać z określonym adresem IP dostępnym w systemie. Adres IP może być src na dowolnym konkretnym nośniku.