上海网站排名优化推荐品牌网站的愿望清单怎么做

当前位置: 首页 > news >正文

上海网站排名优化推荐,品牌网站的愿望清单怎么做,南宁外贸网络营销,视频素材免费下载素材库Android 指定有线网或Wifi进行网络请求 文章目录 Android 指定有线网或Wifi进行网络请求一、前言#xff1a;二、指定网络通讯测试1、 窗口命令 ping -I 网络节点 IP2、Java 代码指定特定网络通讯 三、指定特定网络的demo app 开发1、效果图#xff1a;2、实际测试结果说明二、指定网络通讯测试1、 窗口命令 ping -I 网络节点 IP2、Java 代码指定特定网络通讯 三、指定特定网络的demo app 开发1、效果图2、实际测试结果说明3、获取不同网络ip地址的代码4、demo代码下载地址 一、前言 有些场景需要指定特定的网络进行通讯 比如Wifi 和有线网同开的设备指定某个网络进行通讯或者某些指定网络进行通讯的场景。 最近刚好开发了Wifi 和有线网同开同联的需求顺便提分享特定网络请求的代码。 Android11上修改有线网和wifi共存 https://blog.csdn.net/wenzhi20102321/article/details/133913924 二、指定网络通讯测试 1、 窗口命令 ping -I 网络节点 IP 测试通过节点对应的网络访问某个ip 130|console:/ # 130|console:/ # ping wwwbaidu.com PING wwwbaidu.com (45.194.224.35) 56(84) bytes of data. 64 bytes from 45.194.224.35: icmp_seq1 ttl43 time13.6 ms 64 bytes from 45.194.224.35: icmp_seq2 ttl43 time13.4 ms 64 bytes from 45.194.224.35: icmp_seq3 ttl43 time38.7 ms 64 bytes from 45.194.224.35: icmp_seq4 ttl43 time13.5 ms ^C — wwwbaidu.com ping statistics — 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev 13.45219.85138.74410.908 ms console:/ # console:/ # console:/ # ping -I eth0 www.baidu.com PING www.a.shifen.com (157.148.69.80) from 192.168.31.174 eth0: 56(84) bytes of data. 64 bytes from 157.148.69.80: icmp_seq1 ttl46 time15.0 ms 64 bytes from 157.148.69.80: icmp_seq2 ttl46 time14.5 ms 64 bytes from 157.148.69.80: icmp_seq3 ttl46 time15.2 ms 64 bytes from 157.148.69.80: icmp_seq4 ttl46 time14.6 ms ^C — www.a.shifen.com ping statistics — 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev 14.58014.87715.2570.294 ms console:/ # console:/ # ping -I wlan0 www.baidu.com PING www.a.shifen.com (157.148.69.80) from 192.5.1.34 wlan0: 56(84) bytes of data. 64 bytes from 157.148.69.80: icmp_seq1 ttl41 time478 ms 64 bytes from 157.148.69.80: icmp_seq2 ttl41 time99.9 ms 64 bytes from 157.148.69.80: icmp_seq3 ttl41 time89.0 ms 64 bytes from 157.148.69.80: icmp_seq4 ttl41 time96.1 ms ^C — www.a.shifen.com ping statistics — 5 packets transmitted, 4 received, 20% packet loss, time 4005ms rtt min/avg/max/mdev 89.084/191.015/478.886166.248 ms console:/ #
这里可以看到有线网和wifi都是对外正常进行通讯的。 未指定-I 的情况使用的是默认的网络。 2、Java 代码指定特定网络通讯 通过Java代码设置指定网络进行通讯 private void testNetwork() {Log.i(TAG, testNetwork);ConnectivityManager connectivityManager (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkRequest.Builder builder new NetworkRequest.Builder();// 设置指定的网络传输类型// wifi: NetworkCapabilities.TRANSPORT_WIFI// 有线网络 NetworkCapabilities.TRANSPORT_ETHERNET//builder.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET);// 设置感兴趣的网络功能builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);NetworkRequest request builder.build();ConnectivityManager.NetworkCallback callback new ConnectivityManager.NetworkCallback() {Overridepublic void onAvailable(Network network) {super.onAvailable(network);Log.i(TAG, 已根据功能和传输类型找到合适的有线网络);Log.i(TAG, testnet onAvailable network network.toString());// 通过network.openConnection 来获取URLConnectiontry {HttpURLConnection urlConnection (HttpURLConnection) network.openConnection(new URL(https://www.baidu.com));if (urlConnection ! null) {int responseCode urlConnection.getResponseCode();String responseMessage urlConnection.getResponseMessage();Log.i(TAG, testEthernetonAvailable responseCode responseCode);Log.i(TAG, testEthernet onAvailable responseMessage responseMessage);InputStream inputStream urlConnection.getInputStream();String result new BufferedReader(new InputStreamReader(inputStream)).lines().parallel().collect(Collectors.joining(\n));Log.i(TAG, testEthernet onAvailable result result);}} catch (IOException e) {Log.e(TAG, testEthernet onAvailable error e.getMessage());}connectivityManager.unregisterNetworkCallback(this);}};connectivityManager.registerNetworkCallback(request, callback);connectivityManager.requestNetwork(request, callback); } 关键是NetworkRequest.Builder.addCapability 指定网络 三、指定特定网络的demo app 开发 1、效果图 上图显示的有 1wifi 和 有线网的 ip地址 2指定某个网络请求数据 3设置请求特定的网址 4返回请求的时间网络的id网址的html源码内容 这里的网络的id 是当前请求网络的 Network 对象的网络id值同时 dumpsys connectivity 命令是可以看到的。 2、实际测试结果说明 实际测试情况 1当WiFi 和 有线网同时连接的情况 指定是没有作用的请求网络使用的是高优先级的网络这里是有线网网络。 通过 Network toString() 信息可以看到 当前连接网络的network id。2只开单一网络的情况 指定网络是有作用的 如果开启有线网指定WiFi 网络是无法进行数据请求的 如果开启Wifi指定有线网是无法进行数据请求的 默认网络是可以正常请求网络数据的。 3、获取不同网络ip地址的代码 可以通过代码查看Wifi 和有线网的 Ip地址 //getIpAddress,第二个参数是决定是获取的wifi的ip地址还是有线网的ip地址public static String getIpAddress(Context context, boolean isGetWifiIp) {Network network null;if (isGetWifiIp) {network getWlanNet(context);} else {network getFirstEthernet(context);}if (network null) {return ;}ConnectivityManager mConnectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);final LinkProperties linkProperties mConnectivityManager.getLinkProperties(network);if (linkProperties ! null) {for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) {InetAddress inetAddress linkAddress.getAddress();if (inetAddress instanceof Inet4Address) {return inetAddress.getHostAddress();}}}return ;}//getFirstEthernetprivate static Network getFirstEthernet(Context context) {ConnectivityManager mConnectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);final Network[] networks mConnectivityManager.getAllNetworks();for (final Network network : networks) {NetworkInfo networkInfo mConnectivityManager.getNetworkInfo(network);if (networkInfo ! null networkInfo.getType() ConnectivityManager.TYPE_ETHERNET) {return network;}}return null;}//getFirstWlanprivate static Network getWlanNet(Context context) {ConnectivityManager mConnectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);final Network[] networks mConnectivityManager.getAllNetworks();for (final Network network : networks) {NetworkInfo networkInfo mConnectivityManager.getNetworkInfo(network);if (networkInfo ! null networkInfo.getType() ConnectivityManager.TYPE_WIFI) {return network;}}return null;} 通过上面的代码 getIpAddress 方法是可以分别获取到Wifi 和有线网的 Ip的 4、demo代码下载地址 https://download.csdn.net/download/wenzhi20102321/88450072