Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas UdpClient berkomunikasi dengan layanan jaringan menggunakan UDP. Properti dan metode kelas UdpClient mengabstraksi rincian pembuatan Socket dalam proses meminta dan menerima data melalui UDP.
Protokol Datagram Pengguna (UDP) adalah protokol sederhana yang berupaya sekuat mungkin untuk mengirimkan data ke host jarak jauh. Namun, karena protokol UDP adalah protokol tanpa koneksi, datagram UDP yang dikirim ke titik akhir jarak jauh tidak dijamin tiba, juga tidak dijamin tiba dalam urutan yang sama di mana mereka dikirim. Aplikasi yang menggunakan UDP harus disiapkan untuk menangani datagram yang hilang, duplikat, dan tidak berurutan.
Untuk mengirim datagram menggunakan UDP, Anda harus mengetahui alamat jaringan perangkat jaringan yang menghosting layanan yang Anda butuhkan dan nomor port UDP yang digunakan layanan untuk berkomunikasi. Internet Assigned Numbers Authority (IANA) menetapkan nomor port untuk layanan umum (lihat Service Name and Transport Protocol Port Number Registry). Layanan yang tidak ada dalam daftar IANA dapat memiliki nomor port dalam rentang 1.024 hingga 65.535.
Alamat jaringan khusus digunakan untuk mendukung pesan siaran UDP pada jaringan berbasis IP. Diskusi berikut menggunakan keluarga alamat IP versi 4 yang digunakan di Internet sebagai contoh.
Alamat IP versi 4 menggunakan 32 bit untuk menentukan alamat jaringan. Alamat kelas C yang menggunakan netmask 255.255.255.0, bit-bit ini dipisahkan menjadi empat oktet. Ketika dinyatakan dalam desimal, empat oktet membentuk notasi dotted-quad yang akrab, seperti 192.168.100.2. Dua oktet pertama (192.168 dalam contoh ini) membentuk nomor jaringan, oktet ketiga (100) mendefinisikan subnet, dan oktet akhir (2) adalah pengidentifikasi host.
Mengatur semua bit alamat IP ke satu, atau 255.255.255.255,255, membentuk alamat siaran terbatas. Mengirim datagram UDP ke alamat ini mengirimkan pesan ke host mana pun di segmen jaringan lokal. Karena router tidak pernah meneruskan pesan yang dikirim ke alamat ini, hanya host pada segmen jaringan yang menerima pesan siaran.
Siaran dapat diarahkan ke bagian tertentu dari jaringan dengan mengatur semua bit pengidentifikasi host. Misalnya, untuk mengirim siaran ke semua host di jaringan yang diidentifikasi oleh alamat IP yang dimulai dengan 192.168.1, gunakan alamat 192.168.1.255.
Contoh kode berikut menggunakan UdpClient untuk mendengarkan datagram UDP pada port 11.000. Klien menerima string pesan dan menulis pesan ke konsol.
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class UDPListener
Private Const listenPort As Integer = 11000
Private Shared Sub StartListener()
Dim listener As New UdpClient(listenPort)
Dim groupEP As New IPEndPoint(IPAddress.Any, listenPort)
Try
While True
Console.WriteLine("Waiting for broadcast")
Dim bytes As Byte() = listener.Receive(groupEP)
Console.WriteLine("Received broadcast from {0} :", groupEP)
Console.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytes.Length))
End While
Catch e As SocketException
Console.WriteLine(e)
Finally
listener.Close()
End Try
End Sub 'StartListener
Public Shared Sub Main()
StartListener()
End Sub 'Main
End Class 'UDPListener
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class UDPListener
{
private const int listenPort = 11000;
private static void StartListener()
{
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (true)
{
Console.WriteLine("Waiting for broadcast");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine($"Received broadcast from {groupEP} :");
Console.WriteLine($" {Encoding.ASCII.GetString(bytes, 0, bytes.Length)}");
}
}
catch (SocketException e)
{
Console.WriteLine(e);
}
finally
{
listener.Close();
}
}
public static void Main()
{
StartListener();
}
}
Contoh kode berikut menggunakan Socket untuk mengirim datagram UDP ke alamat siaran yang diarahkan 192.168.1.255, menggunakan port 11.000. Klien mengirim string pesan yang ditentukan pada baris perintah.
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Program
Public Shared Sub Main(args() As [String])
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
s.EnableBroadcast = True
Dim broadcast As IPAddress = IPAddress.Parse("192.168.1.255")
Dim sendbuf As Byte() = Encoding.ASCII.GetBytes(args(0))
Dim ep As New IPEndPoint(broadcast, 11000)
s.SendTo(sendbuf, ep)
Console.WriteLine("Message sent to the broadcast address")
End Sub 'Main
End Class
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main(string[] args)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.EnableBroadcast = true;
IPAddress broadcast = IPAddress.Parse("192.168.1.255");
byte[] sendbuf = Encoding.ASCII.GetBytes(args[0]);
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
s.SendTo(sendbuf, ep);
Console.WriteLine("Message sent to the broadcast address");
}
}