我是一名新手,在我的一些网络编程上担心。我正在通过多播读取数据(请参阅下面的代码),并希望查找最大传输单位(MTU)或我可以读取的传输单位。任何人都可以引导我到一个来源或方式来做到这一点。谢谢。如何测量数据包在读取多播时从服务器接收的最大传输单元(MTU)
try {
InetAddress add = InetAddress.getByName("127.0.0.1");
MulticastSocket socket = new MulticastSocket(1234);
socket.joinGroup(add);
byte[] bb = new byte[2500];
while (true) {
DatagramPacket data = new DatagramPacket(bb, bb.length);
datagramSocket.receive(data);
processDataReceived(bb);
}
datagramSocket.leaveGroup(socket);
}
catch (IOException e) {
e.printStackTrace();
}
在理想系统上,mutlicast的MTU将为64千字节,因为它使用UDP服务发送消息。但是,真正的MTU将由网络上的物理硬件决定。 IIRC当数据包对于最小MTU来说太大时,数据包将被底层服务(假设它仍然低于64KB)分割,发送和重新创建(透明地)。所以我不认为你可以通过使用Java DatagramPacket对象来找到它。 – flakes