我正在尝试使用此代码连接到套接字
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))
处理这个问题的最佳方法是什么。
答案 0 :(得分:0)
DatagramPacket包含实际接收的数据长度。请参阅'length()'方法。
但我很好奇这个协议。为什么不用TCP连接到服务器并询问它的名字?并完全消除UDP部分?