0

我正在尝试使用此代码连接到套接字

public static Socket connectToSocket(String name)
    {
        try
        {
            while(true)
            {
                byte[] receiveData = new byte[name.length()];
                DatagramSocket clientSocket = new DatagramSocket(PORT);
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                clientSocket.receive(receivePacket);

                if(Arrays.equals(name.getBytes(),receiveData))
                {
                    return new Socket(receivePacket.getAddress(),PORT);
                }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }

但我的问题是我不知道要处理所有信息的字节数组的大小。我试着让 receiveData 数组变得很大,但我意识到这行不通,因为它会弄乱这个语句。

        if(Arrays.equals(name.getBytes(),receiveData))

处理这个问题的最佳方法是什么。

4

1 回答 1

0

DatagramPacket 包含实际接收到的数据的长度。请参阅“长度()”方法。

但我对这个协议很好奇。为什么不直接使用 TCP 连接到服务器并询问其名称?并完全消除 UDP 部分?

于 2013-05-05T23:42:22.367 回答