Android开发---手机自动连接电脑
2012-11-19 22:50
351 查看
可能大家开发时会遇到需要连接电脑的情况,如做一个手机控制电脑的程序。当然,毫无疑问用到Socket编程,进行电脑与手机端的通讯。
当然,这可能要你手动输入IP地址,很麻烦。如何让手机能自动搜索出IP连接电脑呢?
思路一:
电脑服务器端:
Android客服端:
总结:以上方法用的是java中的UDP广播,让服务器在整个局域网中进行广播。当客户端接受到UDP广播后,得到服务器端的IP地址,然后进行其他操作就方便了。(真机上广播成功,但模拟器上不行)。
思路二:
鉴于局域网IP地址已192.168.X.X,可以直接全部遍历。
总结:第二种方法只提供一种思路,但是可行性有待检验。第一种方法的通用性强,在WIFI上测试成功,但GPRS下无反应。
转载请注明出处:http://blog.csdn.net/xn4545945
当然,这可能要你手动输入IP地址,很麻烦。如何让手机能自动搜索出IP连接电脑呢?
思路一:
电脑服务器端:
package com.net; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; /* *应用场景: 一个学校,每当下课时间到了提供提示下课功能。 */ public class UdpSend { public void sendData() throws SocketException, UnknownHostException { DatagramSocket ds = new DatagramSocket();// 创建用来发送数据报包的套接字 String str = "1"; DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("255.255.255.255"), 3001); // 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号 try { ds.send(dp); } catch (IOException e) { e.printStackTrace(); } ds.close(); } public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 1000); } static class MyTask extends java.util.TimerTask { @Override public void run() { UdpSend tt = new UdpSend(); Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String strdate = sdf.format(d); String[] classTime = { "17:08:00", "17:19:00", "17:20:00" }; for (int i = 0; i < classTime.length; i++) { if (classTime[i].equals(strdate)) { try { tt.sendData(); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } } } } } }
Android客服端:
package com.net; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpRecv { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(3001);// 创建接收数据报套接字并将其绑定到本地主机上的指定端口 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, 1024); ds.receive(dp); String strRecv = new String(dp.getData(), 0, dp.getLength()) + " from " + dp.getAddress().getHostAddress() + ":" + dp.getPort(); System.out.println(strRecv); ds.close(); } }
总结:以上方法用的是java中的UDP广播,让服务器在整个局域网中进行广播。当客户端接受到UDP广播后,得到服务器端的IP地址,然后进行其他操作就方便了。(真机上广播成功,但模拟器上不行)。
思路二:
鉴于局域网IP地址已192.168.X.X,可以直接全部遍历。
package com.net; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; public class NetSearcher { public static void main(String[] args) { // TODO code application logic here new NetSearcher(); } public NetSearcher() { long start = System.currentTimeMillis(); Socket socket = new Socket(); byte[] ip = { (byte) 192, (byte) 168, (byte) 0, (byte) 0 }; for (int j = 1; j < 254; j++) { ip[2] = (byte) j; for (int i = 1; i < 254; i++) { try { ip[3] = (byte) i; socket.connect( new InetSocketAddress(InetAddress.getByAddress(ip), 20000), 80); System.out.println("Server's IP 192.168." + j + "." + i); break; } catch (Exception e) { System.out.println("Server IP is not 192.168." + j + "." + i); } } } System.out.println("Time takes " + (System.currentTimeMillis() - start) + " millis."); } }
总结:第二种方法只提供一种思路,但是可行性有待检验。第一种方法的通用性强,在WIFI上测试成功,但GPRS下无反应。
转载请注明出处:http://blog.csdn.net/xn4545945
相关文章推荐
- Android开发手机自动连接数据库步骤
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- 觉得Android开发手机连接不上问题
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- Android开发——自动连接指定SSID的wifi热点(不加密/加密)
- 解决Mac上Android开发时adb连接不到手机问题
- Ubuntu下android手机通过usb连接电脑,显示"???????????? no permissions"问题
- 手机上的android程序如何连接上电脑上Tomcat网页并访问网络
- (转)Android手机连接电脑详细图文教程
- Android 4编程入门经典 开发智能手机与平板电脑
- 扔掉USB线,无需无线路由器,利用笔记本电脑(Win7系统)快速连接你的Android手机(要求支持Wifi)
- 在linux中eclipse连接android手机开发程序
- Android杂谈--通过DDMS实现电脑与Android设备(如手机,平板)的网络连接、截图
- Android开发:adb无法连接手机
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Ubuntu 11.04 下台式电脑通过已连接WIFI的Android手机上网
- Android开发—智能家居系列-----手机连接WIFI模块
- 图:智能手机Android系统的评委评分的比赛打分客户端,开发构思中...,可以和管理员电脑协同完成打分展示工作
- Android 手机静态IP连接局域网访问局域网电脑Web服务器
- Android 开发Ubuntu下 adt 手机连接开发