通过使用Socket来扫描获取手机中可使用的端口
来源:互联网 发布:滨州行知中学电话 编辑:程序博客网 时间:2024/06/02 00:31
首先需要进行在linux的环境下进行查看(可以用android studio中的Terminal中的命令面板操作 :输入 adb shell 回车即可执行liunx命令)
例:某厂商反馈某第三方app占用了端口, 导致CTS测试通不过, 需要协助分析是否是app引起问题。于是需要在网上找怎么在android上查看进程占用端口情况,
- 1. 在linux中可以使用netstat命令查看(参考http://4ujava.iteye.com/blog/548153), 但是Android自带netstat命令不支持p参数, 所以无法查出pid
- 2. 在Android上可以使用busybox工具, busybox中的netstat命令支持p参数, 可以查出pid (见下图最后一列)
- 在命令面板中输入:netstat -tlp 或者 netstat -tln
- 代码示例
List list = new ArrayList<>();
public void onclick(View view) { new Thread(new Runnable() { @Override public void run() { test(); for (Integer integer : list) { L.e("可以使用的端口有:" + integer); } } private void test() { Socket socket = null; //端口范围:0~65535 for(int i=0;i<65536;i++){ try { // String ip = getLocalIpAddress(); // L.e("本地IP:" + ip); //创建Socket socket = new Socket("127.0.0.1", i); //IP:10.0.2.2,端口54321 //L.e("连接成功"); /** * sClosed(): 如果Socket已经连接到远程主机, 并且还没有关闭, 则返回true , 否则返回false . isConnected(): 如果Socket曾经连接到远程主机, 则返回true , 否则返回false . isBound(): 如果Socket已经与一个本地端口绑定, 则返回true , 否则返回false . L.e("socket.isBound--" + socket.isBound()); L.e("socket.isClosed--" + socket.isClosed()); L.e("socket.isConnected--" + socket.isConnected()); L.e("socket.isInputShutdown--" + socket.isInputShutdown()); L.e("socket.isOutputShutdown--" + socket.isOutputShutdown()); L.e("------------------------"); */ boolean isConnected = socket.isConnected() && !socket.isClosed(); if (isConnected) { list.add(i); } //关闭Socket socket.close(); } catch (Exception e) { // TODO: handle exception L.e(e.toString()); } } } }).start(); } //获取本地IP public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements(); ) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf .getInetAddresses(); enumIpAddr.hasMoreElements(); ) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { L.e("WifiPreference IpAddress" + ex.toString()); } return null; }
阅读全文
0 0
- 通过使用Socket来扫描获取手机中可使用的端口
- 通过socket对系统端口进行扫描
- 使用namp扫描端口
- 使用namp扫描端口
- 让用户通过菜单来使用手机
- 端口(地址)扫描工具nmap的使用
- android通过手机本身来获取经纬度等信息(不使用第三方地图)
- 使用javascript通过className来获取元素
- 使用javascript通过className来获取元素
- 使用Python扫描端口情况
- android系统中使用TelephonyManager类来获取imsi号和其他手机信息
- Android系统中使用TelephonyManager类来获取imei号和其他手机信息
- android系统中使用TelephonyManager类来获取imei号和其他手机信息
- android系统中使用TelephonyManager类来获取imei号和其他手机信息
- android系统中使用TelephonyManager类来获取imei号和其他手机信息
- (转)在C#中使用WIA获取扫描仪数据(四、通过编程方式扫描图像)
- ASP.NET中通过WebService获取数据来使用Highcharts图表控件
- php通过SOCKET来并发获取信息
- Linux 下清空文件的命令
- eclipse 安装weblogic插件
- C# 通过DataTable插入大量数据,50万数据只需要3秒
- Python —— 文件处理
- 大数据Spark企业级实战版【学习笔记】----Spark Shark& Spark SQL
- 通过使用Socket来扫描获取手机中可使用的端口
- Application Programming Interfaces -- 1
- hdu 5703 Desert 水题
- 一键读取Txt、Excel等表格配置【源码+原理】
- HDU-6126 Give out candies(最小割)
- lintcode --最小路径和
- POJ 2752 Seek the Name, Seek the Fame (KMP)
- mongoDB 安装和启动
- 1.16 C# 委托(下)