Ist es möglich, 3G- und WLAN-Verbindungen gleichzeitig zu haben?Ist es möglich, 3G- und WLAN-Verbindungen gleichzeitig zu haben? sogar mit NDK verwenden?
Antwort
Ja, es ist möglich. Sie können aktive Netzwerkschnittstellen programmgesteuert überprüfen. Z.B. mit this Code:
/*
Example code to obtain IP and MAC for all available interfaces on Linux.
by Adam Pierce <[email protected]>
http://www.doctort.org/adam/
*/
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/in.h>
#include <stdio.h>
#include <arpa/inet.h>
int main(void)
{
char buf[1024];
struct ifconf ifc;
struct ifreq *ifr;
int sck;
int nInterfaces;
int i;
/* Get a socket handle. */
sck = socket(AF_INET, SOCK_DGRAM, 0);
if(sck < 0)
{
perror("socket");
return 1;
}
/* Query available interfaces. */
ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
if(ioctl(sck, SIOCGIFCONF, &ifc) < 0)
{
perror("ioctl(SIOCGIFCONF)");
return 1;
}
/* Iterate through the list of interfaces. */
ifr = ifc.ifc_req;
nInterfaces = ifc.ifc_len/sizeof(struct ifreq);
for(i = 0; i < nInterfaces; i++)
{
struct ifreq *item = &ifr[i];
/* Show the device name and IP address */
printf("%s: IP %s",
item->ifr_name,
inet_ntoa(((struct sockaddr_in *)&item->ifr_addr)->sin_addr));
/* Get the MAC address */
if(ioctl(sck, SIOCGIFHWADDR, item) < 0)
{
perror("ioctl(SIOCGIFHWADDR)");
return 1;
}
/* Get the broadcast address (added by Eric) */
if(ioctl(sck, SIOCGIFBRDADDR, item) >= 0)
printf(", BROADCAST %s", inet_ntoa(((struct sockaddr_in *)&item->ifr_broadaddr)->sin_addr));
printf("\n");
}
return 0;
}
Sie können es für Android kompilieren und dann über ADB Shell starten. Auf meinem Gerät gibt es nächste Ausgabe:
[email protected]:/ $ /data/local/tmp/ifenum
lo: IP 127.0.0.1, BROADCAST 0.0.0.0
rmnet_usb0: IP 100.105.60.161, BROADCAST 0.0.0.0
wlan0: IP 192.168.0.100, BROADCAST 192.168.0.255
Wie Sie sehen können, ist das Gerät mit zwei verschiedenen Netzwerken verbunden ist, und ich kann frei wählen, was zu verwenden. (rmnet_usb0
wird von meinem Mobilfunkbetreiber bereitgestellt und ist tatsächlich ein Edge-Netzwerk, aber IMO 3G endet mit dem gleichen Ergebnis)
P.S. Die meisten Anwendungen interessieren sich nicht für die Schnittstelle, die sie verwenden, und binden ihre Sockets an INADDR_ANY
, offensichtlich verwendet das System das "Beste" der verfügbaren Netzwerke.
Okay tnx eine Menge ... Wenn ich alle Netzwerke wie Ihre, bekomme ich Paket (Übertragung) zum Beispiel in 3G und erhalten in WIFI bekommen? Danke für jede Hilfe ... @Serhio – Royal
@Royal Im Allgemeinen - nein. Jeder erstellte Socket verwendet nur eine Netzwerkschnittstelle sowohl zum Senden als auch zum Empfangen. Sie können es umgehen, indem Sie zwei Verbindungen erstellen und diese dann an verschiedene Schnittstellen auf Ihrem Gerät binden. Aber in diesem Fall sollte das entfernte Ende manuell die richtige Verbindung auswählen, von der es Anfragen lesen sollte und auf die es Antworten schreiben soll. – Sergio
- 1. Android - ist es möglich, 3G und Wifi-Verbindungen gleichzeitig zu haben?
- 2. Ist es möglich, mehr als eine Animation gleichzeitig zu haben?
- 3. Verwenden Sie gleichzeitig Wifi und 3G-Schnittstelle auf Android?
- 4. Ist es möglich, UI App und AAR gleichzeitig zu debuggen?
- 5. iOS: Ist es möglich, gleichzeitig Kopfhörer und Lautsprecher zu senden?
- 6. ASP.NET MVC - Ist es sogar möglich, mehrere MVC-Projekte auf demselben Server zu haben?
- 7. Ist es möglich, viele Pipelines für 1 Runspace zu haben
- 8. Ist es möglich, zwei verschiedene sbt-Versionen für ein Projekt gleichzeitig zu haben
- 9. Ist es möglich, mehrere Masken mit Clip-Pfad zu haben?
- 10. Ist es möglich, mehrere simultane Tasteneingaben mit ProcessingJS zu haben?
- 11. Ist es möglich, gleichzeitig die Attribute center und bounds in Leaflet.js zu verwenden?
- 12. Ist es möglich, getText() und setTextColor() gleichzeitig in Android?
- 13. Ist es möglich, eine Tastenradiogruppe mit einer Eingangsgruppe zu haben?
- 14. Ist es möglich, mit Nase mehrere Tests gleichzeitig durchzuführen?
- 15. Ist es möglich, Validatoren mit Parametern zu haben?
- 16. Ist es möglich, Spalten RepeatOnNewPage mit SSRS zu haben?
- 17. ist es möglich, TypeScript und Babel zusammen zu verwenden
- 18. Ist es möglich, phpBB Login zu umgehen oder sogar zu deaktivieren ...?
- 19. Ist es möglich, Daten mit Pipe in Datei zu speichern und sie gleichzeitig zu entpacken?
- 20. Ist es möglich, einen zusammengesetzten Fremdschlüssel in Schienen zu haben?
- 21. Ist es möglich, mit gdb und qemu Linux-Space-Programme und Kernel-Space gleichzeitig zu debuggen?
- 22. Ist es möglich, zu viele anonyme Delegierte zu haben?
- 23. Ist es möglich, in Underscore.js zwei Listen gleichzeitig zu durchlaufen?
- 24. Ist es möglich reCAPTCHA ohne iframe und Javascript zu verwenden?
- 25. Ist es möglich, Inline-Vorlagen zu verwenden?
- 26. Können Wifi und 3G gleichzeitig auf Android funktionieren?
- 27. Ist es möglich, Reflexion mit LINQ zu Entität zu verwenden?
- 28. Event Handlers in Konstruktoren - ist es möglich oder sogar klug?
- 29. Ist es möglich, Django mit Qooxdoo Framework zu verwenden?
- 30. Ist es möglich, ein TextView ohne Tastatur zu haben?
Nicht, dass ich das wüsste. Wie funktioniert das überhaupt? Es gibt keine API zum Wechseln zwischen verschiedenen aktiven Netzwerkverbindungen. – m02ph3u5
Nein, das weiß ich. Ich kann wissen, welche Verbindung zum Staat besteht oder eine von ihnen erzwingen, aber ich kann nicht beide verbinden. Sie können zum Beispiel mit ConectivityManager und WifiManager – Royal