Android:手机扫描局域网所有ip,并进行socket通讯

Android局域网通讯和查找局域网中的指定设备 适用场景: 1、找到连接同一个wifi热点的对方的ip地址 2、B手机连接A手机的热点,B手机获取A手机的ip地址 思路: 由于最近项目中需要做电视与手机之间的文件互传功能,首先想到的是分享热点,彼此建立局域网连接使用Socket来传输文件,在其中遇到一个问题,手机端需要扫描局域网内可以彼此建立连接的电视,根据网上查找可以通过发送Udp广播的方式,去寻找到对方。 代码: 1、获取本机i... 阅读详情
Android手机局域网扫描PC机,利用android的ping命令扫描局域网内所有ip,并对其进行socket通信
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.Socket;
import java.net.SocketException;
import java.util.Enumeration;
import org.apache.http.conn.util.InetAddressUtils;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;
 
public class NetTool {
   
   
  private int SERVERPORT = 8888;
   
  private String locAddress;//存储本机ip,例:本地ip :192.168.1.
   
  private Runtime run = Runtime.getRuntime();//获取当前运行环境,来执行ping,相当于windows的cmd
   
  private Process proc = null;
   
  private String ping = "ping -c 1 -w 0.5 " ;//其中 -c 1为发送的次数,-w 表示发送后等待响应的时间
   
  private int j;//存放ip最后一位地址 0-255
   
  private Context ctx;//上下文
   
  public NetTool(Context ctx){
    this.ctx = ctx;
  }
 
 
 
  private Handler handler = new Handler(){
     
    public void dispatchMessage(Message msg) {
      switch (msg.what) {
       
      case 222:// 服务器消息
        break;
         
      case 333:// 扫描完毕消息
        Toast.makeText(ctx, "扫描到主机:"+((String)msg.obj).substring(6), Toast.LENGTH_LONG).show();
         
        break;
      case 444://扫描失败
        Toast.makeText(ctx, (String)msg.obj, Toast.LENGTH_LONG).show();
        break;
      }
    }
 
  };
   
 
 
  //向serversocket发送消息
  public String sendMsg(String ip,String msg) {
     
    String res = null;
    Socket socket = null;
     
    try {
      socket = new Socket(ip, SERVERPORT);
      //向服务器发送消息
      PrintWriter os = new PrintWriter(socket.getOutputStream());
      os.println(msg);
      os.flush();// 刷新输出流,使Server马上收到该字符串
       
      //从服务器获取返回消息
      DataInputStream input = new DataInputStream(socket.getInputStream());  
      res = input.readUTF();
      System.out.println("server 返回信息:" + res);
      Message.obtain(handler, 222, res).sendToTarget();//发送服务器返回消息
 
    } catch (Exception unknownHost) {
      System.out.println("You are trying to connect to an unknown host!");
    } finally {
      // 4: Closing connection
      try {
        if (socket != null) {
          socket.close();
        }
      } catch (IOException ioException) {
        ioException.printStackTrace();
      }
    }
    return res;
  }
   
 
 
  /**
   * 扫描局域网内ip,找到对应服务器
   */
  public void scan(){
     
    locAddress = getLocAddrIndex();//获取本地ip前缀
     
    if(locAddress.equals("")){
      Toast.makeText(ctx, "扫描失败,请检查wifi网络", Toast.LENGTH_LONG).show();
      return ;
    }
     
    for ( int i = 0; i < 256; i++) {//创建256个线程分别去ping
       
      j = i ;
       
      new Thread(new Runnable() {
         
        public void run() {
           
          String p = NetTool.this.ping + locAddress + NetTool.this.j ;
           
          String current_ip = locAddress+ NetTool.this.j;
           
          try {
            proc = run.exec(p);
             
            int result = proc.waitFor();
            if (result == 0) {
              System.out.println("连接成功" + current_ip);
              // 向服务器发送验证信息
              String msg = sendMsg(current_ip,"scan"+getLocAddress()+" ( "+android.os.Build.MODEL+" ) ");
               
              //如果验证通过...
              if (msg != null){
                if (msg.contains("OK")){
                  System.out.println("服务器IP:" + msg.substring(8,msg.length()));
                  Message.obtain(handler, 333, msg.substring(2,msg.length())).sendToTarget();//返回扫描完毕消息
                }
              }
            } else {
               
            }
          } catch (IOException e1) {
            e1.printStackTrace();
          } catch (InterruptedException e2) {
            e2.printStackTrace();
          } finally {
            proc.destroy();
          }
        }
      }).start();
       
    }
     
  }
 
   
  //获取本地ip地址
  public String getLocAddress(){
     
    String ipaddress = "";
     
    try {
      Enumeration<networkinterface> en = NetworkInterface.getNetworkInterfaces();
      // 遍历所用的网络接口
      while (en.hasMoreElements()) {
        NetworkInterface networks = en.nextElement();
        // 得到每一个网络接口绑定的所有ip
        Enumeration<inetaddress> address = networks.getInetAddresses();
        // 遍历每一个接口绑定的所有ip
        while (address.hasMoreElements()) {
          InetAddress ip = address.nextElement();
          if (!ip.isLoopbackAddress()
              && InetAddressUtils.isIPv4Address(ip.getHostAddress())) {
            ipaddress = ip.getHostAddress();
          }
        }
      }
    } catch (SocketException e) {
      Log.e("", "获取本地ip地址失败");
      e.printStackTrace();
    }
     
    System.out.println("本机IP:" + ipaddress);
     
    return ipaddress;
 
  }
   
  //获取IP前缀
  public String getLocAddrIndex(){
     
    String str = getLocAddress();
     
    if(!str.equals("")){
      return str.substring(0,str.lastIndexOf(".")+1);
    }
     
    return null;
  }
   
  //获取本机设备名称
  public String getLocDeviceName() {
     
    return android.os.Build.MODEL;
     
  }
   
   
}
 
</inetaddress>
</networkinterface>


【Android学习笔记】Android作为客户端与Linux服务器端通过Socket连接 之前查找过很多网上的例子,直接new一个socket对象,传ip值和端口号进去,发现在手机上运行之后,都是不行的,会出现android.os.NetworkOnMainThreadException 异常错误,弄了几天,终于发现只有通过异步线程的方法才测试出一个可以运行的代码。此程序是可以扫描服务器开放的端口,再连接,我这里是开放了60000端口,测试时连接60000的端口。需要服务器和客户端都连 阅读详情

相关推荐

在安卓Termux中部署与实战Metasploit:打造移动渗透测试环境

渗透测试是信息安全领域评估系统安全性的核心方法,其原理在于模拟攻击者行为以发现潜在漏洞。作为业界标准框架,Metasploit的价值在于将漏洞利用、载荷交付和后渗透模块集成于一体,极大地提升了安全测试的效率和标准化程度。其典型应用场景包括授权范围内的漏洞验证、红队演练和安全研究。随着移动计算的普及,在安卓平台的Termux终端环境中部署Metasploit,成为了一种创新的工程实践。这要求深入理解Linux环境配置、包依赖管理和移动端网络特性。通过解决Ruby环境编译、PostgreSQL数据库配置等具体问

weixin_34122810的博客 452

安卓和win环境下扫描局域网下设备IP的工具

安卓和win环境下扫描局域网下设备IP的工具 在使用初次链接树莓派的时候,不知道树莓派IP,可使用附件内下载的两个工具扫描局域网下的设备进行识别指定树莓派IP进而使用ssh或FTP工具进行连接。 工具下载链接 https://download.youkuaiyun.com/download/weixin_42063567/72559408 以下为使用预览图(win平台软件未展示): 须知 1、wifi网络分析仪,ip扫描仪(含Windows端和安卓端); 2、用于扫描当前wifi或是局域网下的联网设备,可现实设备

Dapenson 5197

手机安装Kali Linux:Termux方案原理与移动渗透测试环境搭建

Linux容器技术通过在用户空间创建隔离的虚拟化环境,实现了在不影响宿主系统的前提下运行完整的操作系统。其核心原理是利用chroot或proot等工具,将特定目录模拟为根文件系统,配合命名空间和资源控制,为应用程序提供独立的运行视图。这项技术在移动设备和嵌入式系统中具有重要价值,能够将强大的桌面级工具链移植到资源受限的平台上。在信息安全领域,这种轻量级虚拟化方案使得专业的安全审计和渗透测试工具能够便捷地部署于智能手机等移动设备。通过Termux配合proot实现Android设备上的Kali Linux环境

weixin_33738578的博客 367

局域网ip扫描工具_黑客武器库之手机安全渗透工具盘点(下)

.001 ZantiZanti是由Zimperium公司打造的Android平台下的渗透测试工具包。Zanti支持两种中间人攻击方式,分别为MIMT攻击和ARP攻击,中间人内带有多个攻击模块,例如MAC地址欺骗,会话劫持,漏洞检查,密码审核,网络扫描,SSL条等等...Zanti除中间人外,还有许多小功能,例如MAC地址转换器,开钓鱼热点,路由器后门大全,WiFi信号检测器,HTTP服务器等等.....

weixin_39964528的博客 4566

深入剖析AhMyth Android RAT:从跨平台架构到移动安全防御实战

远程访问木马(RAT)是一种能够远程控制目标设备的恶意软件,其核心原理在于在受控端植入后门程序,并与控制端建立隐蔽通信信道。这类技术的价值在于揭示了权限滥用与系统漏洞结合可能带来的巨大安全风险,在移动安全、渗透测试与威胁情报分析等领域具有重要研究意义。本文聚焦于AhMyth这一典型的开源Android平台RAT,它采用**Electron框架**构建跨平台控制端,并利用**Android系统权限机制**实现信息窃取与远程控制。通过剖析其客户端-服务器架构、持久化技术及功能模块,旨在为开发者与安全从业者提供识

weixin_30839881的博客 538

可以扫描局域网ip扫描工具

扫描局域网的ip工具很 能够对局域网的ip进行扫描 呵呵 对于局域网ip扫描的用户 是个不错的工具

android扫描局域网中的所有ip,NMAP扫描局域网内在线IP

今天读了大神吴翰清的《白帽子讲web安全》这本书,本身对网络这一块就是十分感兴趣,看完后突然就对怎么去扫网段内在线主机很感兴趣,了解到了NMAP这款开源的被广泛使用的端口扫描工具,来了兴致,就扫了一下寝室局域网里的在线主机,做个简记。安装 nmapWindows 有客户端,直接去官网下载安装即可。Debain 系列:sudo apt-get install umapRedhat 系列:sudo y...

weixin_28952633的博客 4398

常用端口扫描工具:protScan/Advanced_Port_Scanner/nmap/nstp

protScan/Advanced_Port_Scanner/nmap/nstp

android ip地址扫描,Android:手机扫描局域网所有ip,并进行socket通讯

android 手机局域网扫描PC机;利用android的ping命令扫描局域网内所有ip,并对其进行socket通信import java.io.DataInputStream;import java.io.IOException;import java.io.PrintWriter;import java.net.InetAddress;import java.net.NetworkInter...

weixin_42610010的博客 2007

Android 极速获取局域网在线设备信息

Android 单线程获取局域网在线设备,极速刷新arp文件并读取内容 从4分30s 优化到 0.150s

局域网android设备发现功能

局域网android设备发现功能,包括udp发现和蓝牙发现,可进行连接通信

android socket ip扫描,android手机扫描局域网所有ip并进行socket通讯

androidAndroid手机扫描局域网所有ip,并进行socket通讯en = NetworkInterface.getNetworkInterfaces();// 遍历所用的网络接口while (en.hasMoreElements()) {NetworkInterface networks = en.nextElement();// 得到每一个网络接口绑定的所有ipEnumeration ...

weixin_36369848的博客 494

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

安卓编程实现wifi聊天,视频和音频通话

安卓编程实现wifi聊天,视频和音频通话 安卓编程实现wifi聊天,传文件,视频和音频通话 在移动开发的过程中,即时通讯是许多app必须要用到的功能,许多app都没有自主开发自己的聊天系统,反而引用了第三方的即时通讯sdk,贵还不说,有时候想自己增加功能也是麻烦,本文通过安卓编程为例,使用wifi作为服务器,实现了安卓即时通讯和视频音频的通话功能。 安卓开启热点服务 安卓系统自带的热点服务,本次编程将热点开启作为局域网的聊天服务器,一台手机作为主服务器搭建聊天服务。 热点创建服务代码如下 public vo

zhongzhizhuo的博客 1115

AI安全攻防:十六进制编码与表情符号如何绕过ChatGPT安全限制

在人工智能安全领域,提示词工程是影响大语言模型行为的关键技术。其核心原理在于通过精心设计的输入文本,引导模型生成特定内容或执行特定任务。这项技术的价值在于能够深入探究模型的理解机制与决策边界,对于模型优化、安全测试及功能开发具有重要意义。在实际应用场景中,研究人员常利用编码转换、符号插入等方法构造输入,以测试模型安全护栏的鲁棒性。近期,一种结合十六进制编码与表情符号的组合攻击手法受到关注,该方法通过信息伪装与语义干扰,试图绕过模型内置的内容过滤机制,这凸显了当前AI安全在输入预处理与语义理解协同防御上面临的

weixin_30633405的博客 449

AI代码标注专家Prompt指令的最佳实践

AI代码标注专家 Prompt 可作为项目级别提示词使用,专门负责为 AI 生成的代码添加特定的注释标记,然后基于 Node 脚本可以初步统计出 AI 代码占比。

💻 Code:TypeScript / Engineering 🤖 AI:Prompt Optimization / Context Memory / Coding Agents 615

Android 通过 NSD 服务 & Netty(断线重连、心跳、黏包处理) 实现两个 Android 系统端的长连接通讯

引言 近期需求,通过手机App端取号机(含叫号通知功能),实时连接 另一台 Android 广告机用于播放当前被叫到的号数。 这里有两种Android 机 一台「基于Sunmi版的可出小票的Android机」 一台「Android系统 盒子连接上大屏电视机」 总之要做的就是连接两台机子互相通讯,一台发送数据 一台处理展示。最终可实现两端互发! 本篇目录 1.寻找适合的通讯方式...

thisfeng 3937

最新小旋风蜘蛛池X6.21解密版+绕过授权带教程

介绍: 1.站群管理:用你的域名在这里添加网站 2.站点优化:站点互链,内容优化 2.系统设置:开启蜘蛛池 3.采集管理(可开启自动采集) 4.缓存设置:推荐开启tkd缓存 其他的用户根据自己的实际情况后台进行配置,通常以下: 1.后台首页(这里显示系统的大致概况) 2.系统设置:蜘蛛池的基本设置(访问开关、跳转、统计等等) 3.站群管理: 1.网站管理(用你的域名在这里添加网站) 2.模型管理(可构建不同类型站点:电影、文章、论坛等等) 3.TKDB调用模板(即:title、keywords、descri

百度SEO程序下载 2936

unity android服务器端,[转载收藏]unity3d Android客户端与PC服务器实现Socket通信(wifi)...

本文介绍Android终端持续扫描AP信息并发送给服务器端的实现。首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路。使用ServerSocket创建TCP服务器端,然后在Android客户端使用Socket的构造器来连接服务器。其中Android终端通过WIFI连接和PC处于同一局域网。1. PC服务器启用ServerSocket两个通信实体在建立虚拟链路之前,需要有一方先准备...

weixin_36482579的博客 446

Orange3实战教程:实例---文本分类

我们可以使用预测模型按作者、类型、情感等对文档进行分类。在此工作流中,我们根据文档的Aarne Thompshon Uther索引对文档进行归类,这是故事的主题定义。我们使用两个简单的学习器,Logistic回归和朴素贝叶斯,两者都可以在诺谟图中检查。然后再从可视化分类中添加列线图组件,观察哪些词对逻辑回归最重要。也可以尝试使用在朴素贝叶斯模型上,并编辑连线属性。再从模型中添加朴素贝叶斯模型,以尝试不同的学习器。

err2008的专栏 385

调整开关频率处理传导骚扰超标的系统方法

针对某产品在传导骚扰测试中660kHz频点超标问题,分析发现与DC-DC模块开关频率直接相关。通过调整模块开关频率至500kHz,使其避开标准限值严苛频段(0.53-1.8MHz),在不改变硬件设计的情况下实现测试通过。该案例表明,利用EMC标准的频率特性进行"频谱设计"比传统滤波手段更高效,建议在多模块系统中采用1:2:4等频率规划策略,从源头降低噪声耦合风险。这一频率迁移思路为EMC优化提供了新范式。

硬核科技 328

Android应用安全实战:用Metasploit模拟攻击构建主动防御体系

在移动应用安全领域,理解攻击原理是构建有效防御的基础。Android平台因其开放性成为安全攻防的重点,攻击者常利用标准化路径和系统漏洞实施入侵。Metasploit Framework作为渗透测试的行业标准工具,不仅能用于攻击模拟,更是安全自查的利器。通过生成Android载荷、建立反向连接等实战演练,开发者可以直观理解攻击链的完整流程,包括权限提升、数据窃取等关键环节。这种攻击视角的模拟,能帮助识别应用在数据存储、网络通信和权限管理等方面的安全盲区,最终转化为加固措施,实现从被动防护到主动防御的转变。

weixin_34221112的博客 412

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 933
上一篇: Cygwin make命令及手动创建快捷方式
下一篇: ANR:Application Not Responding
minuswang
博客等级 码龄17年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值