簡単なUDPファイル転送ソフトをプログラムしております。
string fileURLは"C:\sample.jpg"などの送信するファイルの場所、
string filenameは"sample.jpg"などのように送信するファイル自体のファイル名です。
ReadFile()はバイナリファイルを読み込みバイト配列を返すメソッドです。

System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(自分のポート);
byte[] sendBytes = enc.GetBytes(ファイル名 + "?" + Convert.ToBase64String(ReadFile(fileURL), 0,ReadFile(fileURL).Length));
udp.Send(sendBytes, sendBytes.Length, 相手のIPアドレス, 相手のポート);

ファイルをバイナリで読み込み、Base64に変換後、ファイル名を添付して再びバイナリに変換して送信しています。
この方法だと、軽いファイル(数十KBくらい?)なら問題なく送信できるのですが、
重いファイルはバッファが一杯になってしまい、送信できません。
パケットに分けて送信するのでしょうが、イマイチ方法が思いつかなく・・・

宜しくお願い致します。