http://blog.chinaunix.net/uid-26153556-id-2150392.html

<0>控制WIFI,获取WIFI信息

  1. WifiManager = (WifiManager)WIfi_ActivityActivity.this.getSystemService(Service.WIFI_SERVICE);
  2. WifiManager.setWifiEnabled(true);
  3. System.out.println("wifi state ======>"+WifiManager.getWifiState());
  4. state.setText("当前WIFI网卡状态为"+WifiManager.getWifiState());
<1>发送UDP数据报
  1. try {
  2. DatagramSocket socket = new DatagramSocket(9090);
  3. InetAddress serverAdd = null;
  4. try {
  5. serverAdd = InetAddress.getByName("192.168.1.102");
  6. } catch (UnknownHostException e) {
  7. // TODO Auto-generated catch block
  8. e.printStackTrace();
  9. }
  10. byte[] msg = sendmsg.getText().toString().getBytes();//获取输入框中输入的内容并转换成msg
  11. DatagramPacket packet = new DatagramPacket(msg,msg.length,serverAdd,9090);
  12. try {
  13. socket.send(packet);
  14. socket.close();
  15. sendmsg.setText("");;
  16. } catch (IOException e) {
  17. // TODO Auto-generated catch block
  18. e.printStackTrace();
  19. }
  20. } catch (SocketException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
<2>int to IP

int ——> IP:

  • 将整数值进行右移位操作(>>>),右移24位,再进行与操作符(&)0xFF,得到的数字即为第一段IP。
  • 将整数值进行右移位操作(>>>),右移16位,再进行与操作符(&)0xFF,得到的数字即为第二段IP。
  • 将整数值进行右移位操作(>>>),右移8位,再进行与操作符(&)0xFF,得到的数字即为第三段IP。
  • 将整数值进行与操作符(&)0xFF,得到的数字即为第四段IP。
  1. private String intToIp(int i) {
  2. return (i & 0xFF ) + "." +
  3. ((i >> 8 ) & 0xFF) + "." +
  4. ((i >> 16 ) & 0xFF) + "." +
  5. ( i >> 24 & 0xFF) ;
  6. }
注意:这里用到了强制类型转换,把int类型转换成string,java里面没有类似C语言的直接在变量前加所需要转换的方法,因为java里面int,string都是类,不能直接转换,这里用了一个方法就是int+".",这样自动把int类型转换为了string类型,得到我们需要的信息了。
<3>局域网在线主机列表刷新方法
这个想了一段时间,最后想到一个办法,就是在每个客户端在发送询问是否在线的广播前,清空自己的局域网主机列表,然后等待局域网内主机的响应,收到一个就在列表中添加一个信息,询问广播每隔一段时间发送一次。
<3>(转)什么是套接字?
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
生成套接字,主要有3个参数:通信的目的IP地址、使用的传输 层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。如图1:
Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
 
要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。     
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。     
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连 接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客 户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

Android开发局域网通信软件笔记相关推荐

  1. Android开发技术学习笔记

    目标:全面学习知识点,能理解原理,多实战练习并做笔记与总结学习心得 Android开发技术学习笔记记录如下: Android开发Google的官网https://developer.android.g ...

  2. Android开发高手课笔记--如何打造高质量应用?

    前言 学习<Android开发高手课>也有一段时间了,确实对技术的提高很有帮助,可以开拓自己的视野.想利用这一段时间好好整理下学习笔记,以便回顾.由于版权问题,后续笔记不再公开,感兴趣可扫 ...

  3. Android开发艺术探索笔记

    <Android开发艺术探索>这本书在几年前就已经买了,陆陆续续看过几次,都没有看完,没有理解透. 最近重读<Android开发艺术探索>,读了两次,第一次读完感觉还有大量的知 ...

  4. Android:《Kotlin 从零到精通Android开发》读书笔记

    原文发布在我的公众号:CnPeng 所有文章将优先发布于公众号,随后才会更新简书. 前前后后整整四十天,终于利用非工作时间读完了 欧阳燊(shen)写的 <Kotlin 从零到精通Android ...

  5. Android开发核心知识笔记共2100页,讲的明明白白!

    开篇 说一下我大概的情况.渣本毕业,工作已经有快3年了,从高中就开始玩小破站.无论是学习还是日常放松都是在b站.大学主学的软件技术专业,所以,入职bilibili是我大学时期给自己定的小目标. 在学校 ...

  6. Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)

    Activity作为Android开发中最常用的一个组件,是Android开发人员必须熟悉且掌握的重要内容.同时Activity也是在面试中经常被问到的一个方向.因此,掌握Activity的重要性也不 ...

  7. 第二章 搭建Android开发环境 读书笔记

    本章主要介绍了Ubuntu Linux环境下的Android开发环境的配置.搭建Android底层开发的环境,主要包括Android的应用程序开发环境.Android NDK开发环境和交叉编译环境的搭 ...

  8. ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记

    原文链接 http://sparkyuan.me/ 转载请注明出处 View的绘制流程是从ViewRoot的performTraversals方法開始的.它经过measure.layout和draw三 ...

  9. Android 开发艺术探索笔记(17),android开发艺术探索

    垃圾回收的相关工作,比如清楚数据 调用onDeatchFromWindow方法,在这个方法里结束进程.终止动画等 通过Session的remove方法删除Winodow,最终会调用WindowMana ...

最新文章

  1. 腾讯推出的这款高性能 RPC 开发框架,确定不了解下吗?
  2. mysql存储过程删除重复记录
  3. android 文件mimetype_【Android】NFC课件
  4. 获取Class类对象的三种方式
  5. RxJava 基础扫盲
  6. go 类型断言_(57)接口的类型断言
  7. tiny4412u-boot烧写及根文件系统制作(不进入终端问题)
  8. redis 关系数据库怎么转换 和_redis数据库设计(转)
  9. @程序员,2019 年软件开发新趋势必知!
  10. mysql 插入多行_MySQL使用INSERT插入多条记录
  11. jdk lambda表达式的坑
  12. FISCO BCOS Solidity 智能合约 返回多个值
  13. 怎么找到安装在Linux系统中的Windows软件的文件
  14. Vmware、Hyper-V、Virtual PC虚拟机运用usb server使用USB加密狗设备
  15. Nginx编译时error: assignment makes pointer from integer without a cast处理
  16. oracle随机取名,oracle 表查询随机抽取数据
  17. python search用法,Python-re中search()函数的用法详解(查找ip)
  18. hadoop dremel Caffeine Pregel
  19. Executor框架的使用
  20. append()方法

热门文章

  1. 浅谈蛇形走线怎么用,你知道吗?
  2. 腾讯云服务器Ubuntu系统如何使用 root 用户远程登录
  3. revit建模中两面墙贴在一起怎么插入门窗及隐框玻璃的做法
  4. Revit建模弹窗警告:图元稍微偏离了轴,可能会导致不精确
  5. c++中的system(pause)的作用
  6. 基础语法(整型:uint、uint8、uint16、uint32、uint64、uintptr)
  7. 数据预处理--上采样(过采样)与下采样(降采样)
  8. Java 将Word保存为WPS和WPT格式
  9. 金航数码再度携手 The Open Group年度峰会
  10. iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享