向局域网中的所有人发送 UDP 数据 Android
Send UDP data to all on the LAN Android
我可以将 UDP 数据发送到特定的 IP 地址,但我需要将其发送给监听端口 55555 的人。这是我正在使用的代码。我不想发送到特定的 ip。
import android.util.Log;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpServer implements Runnable {
UdpServer() {
run();
}
public void run() {
try {
String messageStr = "40320";
int server_port = 55555;
DatagramSocket datagramSocket = new DatagramSocket();
InetAddress host = InetAddress.getByName("10.1.10.14");
int msg_length = messageStr.length();
byte[] message = messageStr.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(message, msg_length,host,
server_port);
datagramSocket.send(datagramPacket);
} catch (Exception e) {
}
}
}
广播会将数据发送到局域网中的所有设备。多播只会将数据发送给订阅它的人。从您提供的有限信息来看,听起来多播会起作用。如果您进行广播,您实际上是在向局域网中的所有设备发送数据,例如您的智能电视、所有笔记本电脑等。
这是一个使用 java 多播套接字的简单客户端服务器应用程序。http://examples.javacodegeeks.com/core-java/net/multicastsocket-net/java-net-multicastsocket-example/
通过多播,设备充当服务器并打开一种特殊的 udp 套接字进行多播。客户端订阅该服务器的多播套接字并实质上参与数据传输。
这里有一些关于多播的技巧
- 确保服务器在您的 java 代码中使用多播地址。这在 224.0.0.0 - 239.255.255.255 范围内,一些地址是保留的。我发送的示例代码使用 224.0.0.3。您无需在 WIfi 设置中更改 IP。这是在 java 代码中完成的。它就像一个额外的地址,它将被监听。客户将订阅此地址。
- 对于 android,您必须在清单文件中为多播锁启用多播许可。参见 http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
我可以将 UDP 数据发送到特定的 IP 地址,但我需要将其发送给监听端口 55555 的人。这是我正在使用的代码。我不想发送到特定的 ip。
import android.util.Log;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpServer implements Runnable {
UdpServer() {
run();
}
public void run() {
try {
String messageStr = "40320";
int server_port = 55555;
DatagramSocket datagramSocket = new DatagramSocket();
InetAddress host = InetAddress.getByName("10.1.10.14");
int msg_length = messageStr.length();
byte[] message = messageStr.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(message, msg_length,host,
server_port);
datagramSocket.send(datagramPacket);
} catch (Exception e) {
}
}
}
广播会将数据发送到局域网中的所有设备。多播只会将数据发送给订阅它的人。从您提供的有限信息来看,听起来多播会起作用。如果您进行广播,您实际上是在向局域网中的所有设备发送数据,例如您的智能电视、所有笔记本电脑等。
这是一个使用 java 多播套接字的简单客户端服务器应用程序。http://examples.javacodegeeks.com/core-java/net/multicastsocket-net/java-net-multicastsocket-example/
通过多播,设备充当服务器并打开一种特殊的 udp 套接字进行多播。客户端订阅该服务器的多播套接字并实质上参与数据传输。
这里有一些关于多播的技巧
- 确保服务器在您的 java 代码中使用多播地址。这在 224.0.0.0 - 239.255.255.255 范围内,一些地址是保留的。我发送的示例代码使用 224.0.0.3。您无需在 WIfi 设置中更改 IP。这是在 java 代码中完成的。它就像一个额外的地址,它将被监听。客户将订阅此地址。
- 对于 android,您必须在清单文件中为多播锁启用多播许可。参见 http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html