UDPによりデータの送受信を行う.NET FrameworkでUDPを扱うには、UdpClientクラスを使用すると便利です。 UDP(User Datagram Protocol)はTCPのように接続の確立の必要がなく、相手にデータを一方的に送りつけます。そのため、サーバーも必要ありません。(UDPに関して詳しくは、「アスキー デジタル用語辞典 - UDP」等をご覧ください。) UdpClientクラスでは、データの受信をReceiveメソッドで、送信をSendメソッドで行います。 以下にUdpClientクラスを使ってデータを送受信するサンプル(コンソールアプリケーション)を示します。データを送信した後、送られてきたデータを受信しています。自分自身に送信し、受信しているため、実用性はありません。 Imports System Public Class Class1 Shared Sub Main() '文字コードを指定する Dim enc As System.Text.Encoding = System.Text.Encoding.UTF8 'データを送信するリモートホストとポート番号 Dim remoteHost As String = "localhost" Dim remotePort As Integer = 2002 'バインドするローカルポート番号 Dim localPort As Integer = 2002 'ローカルポート番号localPortにバインドする Dim udp As New System.Net.Sockets.UdpClient(localPort) '送信するデータを読み込む Dim sendMsg As String = Console.ReadLine() Dim sendBytes As Byte() = enc.GetBytes(sendMsg) 'リモートホストを指定してデータを送信する udp.Send(sendBytes, sendBytes.Length, remoteHost, remotePort) 'データを受信する Dim remoteEP As System.Net.IPEndPoint = Nothing Dim rcvBytes As Byte() = udp.Receive(remoteEP) Dim rcvMsg As String = enc.GetString(rcvBytes) Console.WriteLine("受信したデータ:{0}", rcvMsg) Console.WriteLine("送信元アドレス:{0}/ポート番号:{1}", _ remoteEP.Address, remoteEP.Port) 'UDP接続を終了 udp.Close() Console.ReadLine() End Sub End Class using System; public class Class1 { static void Main() { //文字コードを指定する System.Text.Encoding enc = System.Text.Encoding.UTF8; //データを送信するリモートホストとポート番号 string remoteHost = "localhost"; int remotePort = 2002; //バインドするローカルポート番号 int localPort = 2002; //ローカルポート番号localPortにバインドする System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(localPort); //送信するデータを読み込む string sendMsg = Console.ReadLine(); byte[] sendBytes = enc.GetBytes(sendMsg); //リモートホストを指定してデータを送信する udp.Send(sendBytes, sendBytes.Length, remoteHost, remotePort); //データを受信する System.Net.IPEndPoint remoteEP = null; byte[] rcvBytes = udp.Receive(ref remoteEP); string rcvMsg = enc.GetString(rcvBytes); Console.WriteLine("受信したデータ:{0}", rcvMsg); Console.WriteLine("送信元アドレス:{0}/ポート番号:{1}", remoteEP.Address, remoteEP.Port); //UDP接続を終了 udp.Close(); Console.ReadLine(); } }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright(C) DOBON!. All rights reserved.
|