画像をUDPで送る/受け取る


[注意] IPヘッダ中の「ヘッダ長フィールド(4bit)」が「ヘッダの長さ/4」を表していて、 通常の値は5でありIPヘッダ長が20byteであることを表します(IPヘッダの最大長は60byte)。 IPヘッダ中の「全データ長フィールド」はIPデータグラムの全長をバイト数で表しており、 これと「ヘッダ長フィールド」から 「IPデータグラム中のデータの始まりの位置とデータの長さ」がわかります。 全データ長フィールドは 16bit 幅なのでIPデータグラムの最大サイズは 65535 バイトです。 65535バイトのIPデータグラムを転送することは可能ですが、 普通はIP層でフラグメント化されて送られます。

実は、ホストは 576 バイト以上のデータグラムを受信するように要求されてはいません。 TCPはユーザのデータをフラグメント化するのでこの制限の影響を受けません。 UDPでは多くのアプケーション(RIP, TFTP, BOOTP, DNS, SNMP など)が ユーザのデータを 512バイト以下の長さにすることでこの影響から免れています (NFSを実装する多くのシステムでは、8192byte以上のIPデータグラムを許していますが)。

ブロードキャスト・アドレスにUDPデータグラムを送信する場合は、 512byte以下のデータサイズになるようにする方が安全です。 そうしないと、システムによっては送信時にerror が発生します。

下に示すプログラム例では一度に送るUDPのデータ長は 4*2+3*128=392バイト以下に制限しています。

UDPはコネクションを確立しないので、ブロードキャストアドレスを宛先として送信できます。 そのため、同じネットワークに接続されている複数のクライアントに一斉に情報を送ることができます。

津田塾大学計算センターs205wsの教室のネットワークのネットワーク・アドレスは 172.17.0.0/23 なので、 ブロードキャスト・アドレスは 172.17.1.255 となります(2019年4月8日時点)。

自宅のブロードキャストアドレスは、自分のPCのIPアドレスをipconfig コマンド(Windows)や/sbin/ifconfig コマンド(Mac)などで調べて 自分で計算して下さい(2020年6月20日追記)。。


UDPサーバ(受信側)





Fatal error: Uncaught Error: Call to undefined function show_code_img() in /home/xs339464/ynitta.com/public_html/class2025/network/all/winshare_pdf.php:81 Stack trace: #0 {main} thrown in /home/xs339464/ynitta.com/public_html/class2025/network/all/winshare_pdf.php on line 81