私はパケットを送信するためにUdpClientクラスを使用しています。C#UDPパケットを分割する方法は?
大きなパケットは宛先に到達しないため、パケットごとのサイズ制限があるようです。パケットのサイズを小さくしようとしましたが、パケットが宛先に到達することができます。私はどこかで "標準"パケットサイズの制限が512バイトであると読んでいます。
しかし、私はまだ512バイトよりも大きなオブジェクトを送信する必要があります。
私の質問は、バイト配列を小さなパケットに分割するための組み込みの方法です。明らかに、後でスプリットパケットを再構成する必要があります。
私は大きなファイルを自動的に分割できるはずのSocketクラスのSendFileメソッドを見ました。しかし、このメソッドはバイト配列の入力を許可しません(ファイル名のみ)。したがって、メモリ内のデータではなく、ハードドライブに保存されているデータを送信する場合にのみ機能します。
UDPで大量のデータを送信するのはちょっと奇妙です。UDPの場合、データグラムは相手側に届くことが保証されていないからです。彼らがすべて到着したとしても、元の順序であることは保証されていません。 UDPを使用してもよろしいですか? –
それはビデオゲーム用です。私はすでに入力とゲームの状態の転送にUDPを使用しています。しかし、私はあなたが正しいと思っています。おそらくTCP接続は、実際に安全に転送する必要があるため、マップを送信する方が適しています。 – asmo
"私はどこか標準パケットサイズの制限が512バイトであると読んでいます。"あなたのソースは間違っています、イーサネットのフレームサイズは約3倍です。 –