美文网首页
Android UDP 广播

Android UDP 广播

作者: 苍蝇的梦 | 来源:发表于2020-03-24 19:49 被阅读0次

2019-07-08 遇到的一点小问题
最近做局域网内Android端发UDP广播出去,然后接收服务器返回的信息。
参考的文章 Android UDP 广播实践,要用的都有写。

private final static String BROADCAST_IP = "255.255.255.255";       //广播范围
private final static int BROADCAST_PORT = 8888;     //端口
DatagramSocket socket = new DatagramSocket(BROADCAST_PORT);

发送

byte[] sendBuf = 发送内容.getBytes();
InetAddress address = InetAddress.getByName(BROADCAST_IP);
DatagramPacket sendPacket = new DatagramPacket(sendBuf, sendBuf.length, address, BROADCAST_PORT);
socket.send(sendPacket);
 socket.setBroadcast(true);

接收

byte[] ackBuf = new byte[1024];
InetAddress address = InetAddress.getByName(BROADCAST_IP);
DatagramPacket ackPacket = new DatagramPacket(ackBuf, ackBuf.length, address, BROADCAST_PORT);
socket.receive(ackPacket);
接收内容 = new String(ackPacket.getData(), 0, ackPacket.getLength());
应答的IP = ackPacket.getAddress().getHostAddress();

能收到udp消息,但有可能出现不在同一个广播地址,无法http沟通的情况,所以顺便查了下当前设备的广播地址,和服务器的比对。

/**
 * 获取当前移动设备的广播地址
 * 返回示例:192.168.11.255
 */
private String getPhoneBroadcast() throws SocketException {
    System.setProperty("java.net.preferIPv4Stack", "true");
    for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); niEnum.hasMoreElements(); ) {
        NetworkInterface ni = niEnum.nextElement();
        if (!ni.isLoopback()) {
            for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) {
                if (interfaceAddress.getBroadcast() != null) {
                    return interfaceAddress.getBroadcast().toString().substring(1);
                }
            }
        }
    }
    return null;
}

相关文章

  • Android UDP 广播

    2019-07-08 遇到的一点小问题最近做局域网内Android端发UDP广播出去,然后接收服务器返回的信息。...

  • 实时Android语音对讲系统架构

    本文属于Android局域网内的语音对讲项目系列,《通过UDP广播实现Android局域网Peer Discove...

  • Android 使用udp发送广播

    最近做项目时,遇到一个对新人我来说稍微有点麻烦的事情! 那就是使用udp协议发送广播获取服务器地址! http都好...

  • 1.Java 的屏幕广播(基于UDP),2.多线程下载器

    Java 的屏幕广播(基于UDP) Java的屏幕广播,是基于UDP协议的,user datagram proto...

  • UDP广播,向飞秋发消息,模拟QQ-2018-04-02

    UDP广播 from socket import * udp_socket = socket(type=SOCK_...

  • iOS udp广播

    需求是iOS端发送udp消息指令,中控接收端接收做出相应变化。用的GCDAsyncUdpSocket,直接pod导...

  • Android广播

    参考:Android总结篇系列:Android广播机制Android广播机制 一. 广播 1. 广播是什么? 广播...

  • 网络 Conclusion

    1. TCP和UDP TCP/UDP详细分析TCP是点对点的通信,UDP是广播TCP控制了数据包的发送序列的产生,...

  • udp广播测试程序

    本程序主要是为了熟悉udp广播的测试程序,借鉴网上的程序 以上程序主要用于测试ioctl函数是否正常运行,之前定义...

  • iOS Socket UDP广播

    建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TC...

网友评论

      本文标题:Android UDP 广播

      本文链接:https://www.haomeiwen.com/subject/buzahctx.html