cのrecvやread、javas DatagramPacketクラス、pythons SocketServerなどのほとんどのデータグラム受信関数では、受信したデータの量を調べることができます。データグラムは常に完全に受信されていますか?
C:
int amount = recv(sock, buf, n, MSG_WAITALL);
は、Java:
int amount = datagramSocket.getLength();
のpython:
class MyUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
amount = len (self.request[0])
は、これらの信頼性はありますか?あるいは、例えばパケットの断片化やネットワーク遅延のために、メッセージの一部しか受信されない可能性がありますか?
言い換えれば、udp経由で可変長のデータチャンクを送信し、それを相手側で受信すると、これらの金額は元のチャンクのサイズと正確に同じですか?
編集:
ninjaljは良い点を示しており、ここに含める必要があります。受信機能が中断された場合、例えば信号によって何が起こるか? 2つのスレッドが同時に同じソケットからの受信を試みるとどうなりますか?
あなたのJavaコードには「Length」という深刻なスペルミスがあります – Necrolis