PowerShellでUDPをlocalhost送受信する ― 「接続しない通信」を目で見る

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。.NET Socket APIとUDP仕様を確認し、localhostだけで送信元endpointとdatagramを観察する形に整理しています。

検証ステータス:📘 .NET・UDP公式仕様確認済み・Windows実機未確認

UDPはTCPのような接続確立を前提にせずdatagramを送れます。localhostで1通送ると、違いをコードの形から確認できます。

まず試す

受信側を先に実行します。

$udp = [Net.Sockets.UdpClient]::new(9876)
$remote = [Net.IPEndPoint]::new([Net.IPAddress]::Any,0)
try {
  $bytes = $udp.Receive([ref]$remote)
  "[SUCCESS] From=$remote Text=$([Text.Encoding]::UTF8.GetString($bytes))"
} finally { $udp.Dispose() }

別PowerShellから送ります。

$udp = [Net.Sockets.UdpClient]::new()
try {
  $b=[Text.Encoding]::UTF8.GetBytes('PANDA')
  [void]$udp.Send($b,$b.Length,'127.0.0.1',9876)
} finally { $udp.Dispose() }

ここを見る

受信側に送信元endpointとPANDAが出ればSmoke Test成功です。TCPのListen/Acceptに相当する接続確立手順がない点にも注目します。

1か所変えてみる

送信先portを9877へ変えます。受信側9876には届きません。UDPは「送信できた」という戻りだけで相手applicationの受信完了を保証しません。

仕事で使うなら

DNSや監視系protocolを学ぶ入口、localhostの簡易通知、UDPを使う製品の障害調査に役立ちます。業務実装では損失・重複・順序・message sizeを前提に設計し、重要データを「送ったから届いた」と扱わないことが重要です。

公式情報・一次情報

文書情報

記事タイトル
PowerShellでUDPをlocalhost送受信する ― 「接続しない通信」を目で見る
作成日
更新日
Source URL
https://papanda925.com/?p=15545

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました