是否有可能同时有3G和Wifi连接?是否有可能同时拥有3G和Wifi连接?甚至与NDK一起使用?
1
A
回答
0
是的,这是可能的。您可以通过编程检查活动网络接口。例如。与this代码:
/*
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;
}
你可以编译为Android,然后通过ADB外壳推出。在我的设备它给下一个输出:
[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
正如你看到的,我的设备连接到两个不同的网络,我可以自由选择使用什么。 (rmnet_usb0
由我的移动运营商提供,实际上是Edge网络,但IMO 3G以相同结果结束)
P.S.大多数应用程序不关心他们使用的接口并将它们的套接字绑定到INADDR_ANY
,显然系统将使用可用网络的“最佳”。
相关问题
- 1. 3G连接上的iPhone是否“可连接?”使用套接字时3g/wifi是否透明?
- 2. 如何在连接URL之前检测用户是否拥有3G/Wifi?
- 3. 在iOS设备上可以同时使用WiFi连接和3G连接吗?
- 4. 当连接到adhoc wifi时使用3g(使用私有API)
- 5. Android - 可以同时连接3G和Wifi吗?
- 6. OpenGL ES 1.1是否有可能同时拥有vertexColors和lighting?
- 7. iPhone会自动将现有的3G连接切换至WiFi吗?
- 8. 如何在连接到Wifi时检查3G是否已启用?
- 9. 是否有任何API可以区分3G网络和Wifi?
- 10. 是否有可能绕过phpBB登录,甚至禁用它...?
- 11. 是否有可能在PHP中同时拥有两个类?
- 12. 是否有可能使用iOS 4 SDK连接到WiFi接入点
- 13. 是否有可能为Activemq中的不同队列同时拥有kahaDB和memoryPersistenceAdapter?
- 14. 使用wifi连接到3G加密狗
- 15. 是否有可能同时使用SVN和CVS与Eclipse
- 16. 同时拥有抽象类和接口是否有好处?
- 17. AFNetworking有时可能无法使用某些WiFi网络连接
- 18. 如何找到是否iPhone设备连接到使用可达性3G/Wifi
- 19. Twilio是否有可能拥有IVR菜单并同时接受延期?
- 20. 在Android上同时使用wifi和3G接口?
- 21. 我可以使用Bonjour连接两个iOS设备,一个连接3G网络和一个连接WiFi
- 22. iphone WIFI/3G连接问题,一滴
- 23. 从WiFi连接切换到3G导致连接挂起?
- 24. Android - 如何在可用WiFi时保持3g连接
- 25. Android Wifi P2p(Wifi Direct)连接是否可以跨活动使用?
- 26. 如何知道iPhone设备是否拥有3G网络或Wifi网络?
- 27. 是否有可能拥有一个通用的Comparable方法?
- 28. 是否有可能与guice一起使用scala自我类型?
- 29. 是否有可能将Spring MVC与Jersey注释一起使用?
- 30. 是否有可能与QueryExtender一起使用RadioButtonList?
不是我会知道的。无论如何,这工作怎么样?没有用于在不同的活动网络连接之间切换的API。 – m02ph3u5
不,我知道。我可以知道哪个状态连接或强制其中一个连接,但我不能同时连接两个连接。 你可以使用例如ConectivityManager和WifiManager – Royal