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 には、実際に受信したデータの長さが含まれます。「length()」メソッドを参照してください。

しかし、私はこのプロトコルに興味があります。TCP でサーバーに接続して名前を聞いてみませんか? UDP部分を完全に排除しますか?

于 2013-05-05T23:42:22.367 に答える