new Thread(){
public void run(){ try { service=new DatagramSocket(PORT); mExecutorService = Executors.newCachedThreadPool(); //创建线程池 //加一个扫描来连接客户端 while(true){ mExecutorService.execute(new Service()); } } catch (Exception e) { e.printStackTrace(); } } }.start();
需要在那边加一个扫描同一WiFi中的手机客户端 这个代码该怎么写啊 请大神指点我一下 告诉我个具体思路 或者给我点大致的框架代码 也可以 谢谢了 我是个很白的小白 第一次做项目 很多都搞不懂 请有经验的帮我下 谢谢了!!
这个估计就是飞鸽传书的原理。例如同局域网(192.168.1.x)连10台手机,同时打开APP,每个APP打开Socket
监听某端口(例如10001
),你的手机向局域网每个ip发出Socket
请求,如果某个ip能连上,证明客户端打开并监听该端口。
接收方:
ServerSocket server = new ServerSocket(10001); Socket socket = server.accept();
发送方(你手机)
Socket socket = new Socket("192.168.1.xxx", 10001);
只要new Socket(...)
能执行下去,不抛Exception
,证明192.168.1.xxx
有客户端打开并监听这个端口。
特殊情况,如果其他APP同时监听那个端口,socket
也可能请求成功,不过概率很少啦,有上万个端口。如果程序非常严格,那就Socket
连上后,发一个信息,要接收方回复信息,才判断是本APP监听该端口。