首页 文章

Java点对点udp聊天室

提问于
浏览
0

我是Java套接字编程的新手,我正在开发一个小型的对等UDP聊天室应用程序,允许多个客户端相互聊天 .

我的问题是,当他点击连接按钮时,如何让客户端发现所有其他连接的客户端,只提供一个连接的客户端ip和端口?该程序仅在本地网络上运行 .

2 回答

  • 0

    您可以使用UDP的独特功能broadcasting

    在IPv4(您可能正在使用)上,广播地址为255.255.255.255 . 发送到该地址的任何数据报都将发送到该端口的网络上的所有UDP客户端 .

    您可以为聊天应用程序做的是让每个客户端向UDP广播发送一个标识自己的数据包,例如可能是用户的昵称 . 所有其他客户端都将看到该数据包,您将能够解析数据包并显示网络上所有聊天客户端的列表 .

    以下是将数据报发送到广播的示例:

    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);
    

    收到的DatagramPacket将包含已广播它的客户端的IP和端口 .

  • 1

    一个简单的可能性是每个客户端存储它知道的其他对等端并将列表传递给任何连接的新客户端 .

相关问题