Trong Java khi sử dụng DatagramPacket
giả sử bạn có bộ đệm byte[1024*1024]
. Nếu bạn chỉ cần vượt qua điều đó cho DatagramPacket khi gửi/nhận sẽ một Java nhận cuộc gọi cho khối DatagramPacket cho đến khi nó đã đọc toàn bộ megabyte?Java DatagramPacket (UDP) tối đa gửi/recv đệm kích thước
Tôi hỏi nếu Java sẽ chia nhỏ hoặc chỉ cố gắng gửi toàn bộ nội dung bị xóa.
Thông thường giới hạn kích thước là khoảng 64KB cho gói UDP, nhưng tôi tự hỏi vì API của Java cho phép mảng byte nếu đó là giới hạn và thứ gì đó cực lớn bị bỏ hoặc chia nhỏ và ghép lại cho bạn.
Nếu bỏ cuộc gọi API nào sẽ cho tôi biết tải trọng dữ liệu tối đa mà tôi có thể sử dụng trong cuộc gọi Java? Tôi đã nghe nói rằng IPv6 cũng có khung jumbo, nhưng không DatagramPacket (hoặc DatagramSocket
) hỗ trợ rằng kể từ khi UDP xác định spec tiêu đề?
Trên thực tế, MTU được bảo đảm tối thiểu cho IPv4 trên mạng chỉ 68 Byte - 576 là số tối thiểu mà máy chủ được yêu cầu để xử lý. Dù bằng cách nào, một MTU nhỏ như vậy sẽ thực sự, thực sự khác thường. – lxgr
Điều đó có nghĩa là nếu bạn có kích thước gói lớn hơn 64KB, bạn có sử dụng giao thức khác không? –
@PhaniRahul: Tôi sẽ nói rằng nó có nghĩa là "cảm ơn Chúa rằng giao thức xử lý phân đoạn một cách minh bạch và làm cho dữ liệu của tôi thành nhiều gói như là cần thiết". Tôi nghi ngờ nếu bất kỳ giao thức thực tế trong sử dụng sẽ cung cấp cho bạn kích thước gói lớn hơn. :) –