DatagramSocket s = new DatagramSocket();
s.setBroadcast(true);
DatagramPacket dp = new DatagramPacket("insert data here".getBytes(), "insert data here".length(), new InetSocketAddress("255.255.255.255", 5000));
s.send(dp);
另一个客户端可以像这样接收它:
DatagramSocket s = new DatagramSocket();
s.setBroadcast(true);
DatagramPacket dp = new DatagramPacket(new byte[1024], 1024);
s.receive(dp);
2 回答
您可以使用UDP的独特功能broadcasting
在IPv4(您可能正在使用)上,广播地址为255.255.255.255 . 发送到该地址的任何数据报都将发送到该端口的网络上的所有UDP客户端 .
您可以为聊天应用程序做的是让每个客户端向UDP广播发送一个标识自己的数据包,例如可能是用户的昵称 . 所有其他客户端都将看到该数据包,您将能够解析数据包并显示网络上所有聊天客户端的列表 .
以下是将数据报发送到广播的示例:
另一个客户端可以像这样接收它:
收到的DatagramPacket将包含已广播它的客户端的IP和端口 .
一个简单的可能性是每个客户端存储它知道的其他对等端并将列表传递给任何连接的新客户端 .