分配正确的字节数组大小

时间:2013-05-05 23:27:52

标签: java sockets networking bytearray datagram

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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