Bagikan melalui


DatagramSocket Kelas

Definisi

Mendukung komunikasi jaringan menggunakan soket datagram UDP.

Untuk contoh kode, lihat Soket.

public ref class DatagramSocket sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DatagramSocket final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class DatagramSocket final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DatagramSocket : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class DatagramSocket : System.IDisposable
function DatagramSocket()
Public NotInheritable Class DatagramSocket
Implements IDisposable
Warisan
Object Platform::Object IInspectable DatagramSocket
Atribut
Penerapan

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)
Kemampuan aplikasi
ID_CAP_NETWORKING [Windows Phone] internetClient privateNetworkClientServer

Keterangan

Kelas DatagramSocket mendukung komunikasi jaringan menggunakan soket datagram UDP. Objek DatagramSocket dapat digunakan untuk aplikasi klien yang mengirim paket UDP atau untuk aplikasi server yang mendengarkan data UDP masuk.

Beberapa langkah diperlukan untuk mengirim atau menerima data menggunakan objek DatagramSocket. Aplikasi Anda terlebih dahulu menetapkan peristiwa MessageReceived ke penanganan aktivitas. Untuk mendengarkan paket masuk dari titik akhir jarak jauh (skenario server, misalnya), aplikasi Anda memanggil metode BindEndpointAsync atau BindServiceNameAsync untuk mengikat DatagramSocket ke nama layanan lokal atau port UDP. Namun ketika aplikasi Anda perlu berkomunikasi dengan satu titik akhir jarak jauh (skenario klien, misalnya), aplikasi Anda memanggil metode ConnectAsync . Penanganan aktivitas MessageReceived harus diatur sebelum operasi ikat atau sambungkan, jika tidak, kesalahan akan terjadi.

Urutan operasi yang khas adalah sebagai berikut:

  1. Buat DatagramSocket.
  2. Gunakan properti Kontrol untuk mengambil objek DatagramSocketControl dan mengatur kontrol tingkat lanjut apa pun. Langkah ini biasanya tidak diperlukan oleh sebagian besar aplikasi.
  3. Tetapkan peristiwa MessageReceived ke penanganan aktivitas.
  4. Untuk mendengarkan paket masuk dari titik akhir jarak jauh apa pun (skenario server, misalnya), panggil metode BindEndpointAsync atau BindServiceNameAsync untuk mengikat DatagramSocket ke nama layanan lokal atau port UDP.
  5. Untuk berkomunikasi dengan satu titik akhir jarak jauh (skenario klien, misalnya), panggil metode ConnectAsync untuk mengikat DatagramSocket ke titik akhir jarak jauh tertentu.
  6. Penanganan aktivitas MessageReceived akan dipanggil setiap kali pesan dari titik akhir jarak jauh tiba. Kelas ini juga dapat digunakan untuk bergabung dengan grup multicast dan mengirim paket UDP ke grup multicast. Untuk informasi selengkapnya, lihat metode JoinMulticastGroup .

Menangani pengecualian

Anda harus menulis kode untuk menangani pengecualian saat memanggil metode asinkron pada kelas DatagramSocket. Pengecualian dapat diakibatkan oleh kesalahan validasi parameter, kegagalan resolusi nama, dan kesalahan jaringan. Pengecualian dari kesalahan jaringan (hilangnya konektivitas, kegagalan koneksi, dan kegagalan server, misalnya) dapat terjadi kapan saja. Kesalahan ini mengakibatkan pengecualian dilemparkan. Jika tidak ditangani oleh aplikasi Anda, pengecualian dapat menyebabkan seluruh aplikasi Anda dihentikan oleh runtime.

Namespace layanan Windows.Networking.Sockets memiliki metode pembantu dan enumerasi yang nyaman untuk menangani kesalahan saat menggunakan soket. Ini dapat berguna untuk menangani pengecualian jaringan tertentu secara berbeda di aplikasi Anda. Aplikasi juga dapat menggunakan HRESULT dari pengecualian tentang kesalahan validasi parameter untuk mempelajari informasi lebih rinci tentang kesalahan yang menyebabkan pengecualian.

Untuk informasi selengkapnya tentang kemungkinan pengecualian dan cara menangani pengecualian, lihat Menangani pengecualian di aplikasi jaringan.

Menggunakan DatagramSocket dengan Wi-Fi Direct

Aplikasi Anda dapat menggunakan DatagramSocket untuk transfer data jaringan antar perangkat yang menggunakan Wi-Fi Direct menggunakan kelas di namespace Windows.Devices.WiFiDirect . Kelas WiFiDirectDevice dapat digunakan untuk menemukan perangkat lain yang memiliki perangkat berkemampuan Wi-Fi Direct (WFD). Metode WiFiDirectDevice.GetDeviceSelector mendapatkan pengidentifikasi perangkat untuk perangkat WFD terdekat. Setelah Anda memiliki referensi ke perangkat WFD terdekat, Anda dapat memanggil metode WiFiDirectDevice.GetConnectionEndpointPairs untuk mendapatkan objek EndpointPair . Metode pada kelas DatagramSocket dapat digunakan untuk mengirim dan menerima data ke objek EndpointPair . Untuk informasi selengkapnya, lihat Windows.Devices.WiFiDirect dan WiFiDirectDevice.

Menggunakan DatagramSocket di Windows Server 2012

Pada Windows Server 2012 dan Windows Server 2012 R2, Windows.Networking.dll yang mengimplementasikan sebagian besar kelas di namespace Windows.Networking.Sockets akan gagal dimuat kecuali fitur Media Foundation diaktifkan. Akibatnya, aplikasi yang menggunakan DatagramSocket dan kelas soket terkait di namespace Layanan Windows.Networking.Sockets akan gagal jika fitur Media Foundation dinonaktifkan. Penginstalan Windows Server 2012 atau Windows Server 2012 R2 dengan fitur Media Foundation dinonaktifkan.

Fitur Media Foundation dapat diaktifkan pada Windows Server 2012 atau Windows Server 2012 R2 menggunakan Manajer Server atau dengan memasukkan teks berikut dalam prompt perintah atau skrip:

dism /online /enable-feature /featurename:ServerMediaFoundation Setelah fitur Media Foundation diaktifkan, pengguna diminta untuk memulai ulang. Setelah komputer dimulai ulang, kelas untuk soket dan WebSocket di namespace Layanan Windows.Networking.Sockets akan berfungsi seperti yang diharapkan.

Mengatasi rekaman layanan DNS menggunakan DatagramSocket

Aplikasi dapat berkomunikasi dengan alamat DNS target milik catatan SRV. Misalnya, Simple Traversal UDP melalui layanan Network Address Translation (NAT) (STUN) di domain Contoso sesuai dengan _stun._udp.contoso.com. Nama layanan tersebut sesuai dengan nama DNS server, misalnya, stunServer01.contoso.com.

Untuk menyambungkan ke alamat DNS untuk server untuk layanan tersebut, gunakan panggilan metode berikut pada instans DatagramSocket:

using Windows.Networking.Sockets;

DatagramSocket socket = new DatagramSocket();
socket.ConnectAsync(new HostName("contoso.com"), "stun");

Protokol ini disimpulkan sebagai UDP untuk instans DatagramSocket. Metode ini berkaitan dengan karakter garis bawah.

DNS dapat dikonfigurasi untuk memiliki hierarki SRV. Catatan sumber daya DNS SRV bisa memiliki formulir berikut: _stun._service01._udp.contoso.com. Untuk contoh ini, gunakan panggilan metode berikut pada instans DatagramSocket:

socket.ConnectAsync(new HostName("contoso.com"), "stun._service01");

Cuplikan kode ini menggunakan ConnectAsync. Metode GetOutputStreamAsync dan GetEndpointPairsAsync mendukung penggunaan serupa untuk terhubung ke layanan.

Konstruktor

DatagramSocket()

Membuat objek DatagramSocket baru.

Properti

Control

Mendapatkan data kontrol soket pada objek DatagramSocket .

Information

Mendapatkan informasi soket tentang nama host lokal dan jarak jauh serta nama layanan lokal dan jarak jauh untuk objek DatagramSocket .

OutputStream

Mendapatkan aliran output untuk menulis ke host jarak jauh.

Metode

BindEndpointAsync(HostName, String)

Memulai operasi pengikatan pada DatagramSocket ke nama host lokal dan nama layanan lokal.

BindServiceNameAsync(String)

Memulai operasi pengikatan pada DatagramSocket ke nama layanan lokal.

BindServiceNameAsync(String, NetworkAdapter)

Memulai operasi pengikatan pada DatagramSocket ke nama layanan lokal dan antarmuka jaringan tertentu.

CancelIOAsync()

Membatalkan pembacaan dan penulisan yang tertunda melalui objek DatagramSocket .

Close()

Menutup objek DatagramSocket dan membatalkan operasi yang tertunda pada DatagramSocket.

ConnectAsync(EndpointPair)

Memulai operasi sambungkan pada DatagramSocket ke tujuan jaringan jarak jauh yang ditentukan sebagai objek EndpointPair .

ConnectAsync(HostName, String)

Memulai operasi sambungkan pada DatagramSocket ke tujuan jarak jauh yang ditentukan oleh nama host jarak jauh dan nama layanan jarak jauh.

Dispose()

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, merilis, atau mengatur ulang sumber daya yang tidak dikelola.

EnableTransferOwnership(Guid)

Memungkinkan tugas latar belakang aplikasi Anda dipicu oleh broker soket saat lalu lintas untuk DatagramSocket ini tiba saat aplikasi tidak aktif.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

Memungkinkan tugas latar belakang aplikasi Anda dipicu oleh broker soket saat lalu lintas untuk DatagramSocket ini tiba saat sistem dalam status siaga yang terhubung.

GetEndpointPairsAsync(HostName, String)

Mendapatkan daftar objek EndpointPair berdasarkan nama host jarak jauh dan nama layanan jarak jauh yang dapat digunakan untuk mengirim datagram ke tujuan jaringan jarak jauh.

GetEndpointPairsAsync(HostName, String, HostNameSortOptions)

Mendapatkan daftar objek EndpointPair berdasarkan nama host jarak jauh dan nama layanan jarak jauh dan urutan pengurutan yang akan digunakan.

GetOutputStreamAsync(EndpointPair)

Memulai operasi untuk mendapatkan IOutputStream ke tujuan jaringan jarak jauh yang ditentukan oleh objek EndpointPair yang kemudian dapat digunakan untuk mengirim data jaringan.

GetOutputStreamAsync(HostName, String)

Memulai operasi untuk mendapatkan IOutputStream ke tujuan jarak jauh yang ditentukan oleh nama host jarak jauh dan nama layanan jarak jauh yang kemudian dapat digunakan untuk mengirim data jaringan.

JoinMulticastGroup(HostName)

Menggabungkan objek DatagramSocket ke grup multicast.

TransferOwnership(String)

Mentransfer kepemilikan DatagramSocket ke layanan broker soket, yang memantau aktivitas soket dan memberi tahu aplikasi melalui tugas latar belakang jika ada aktivitas.

TransferOwnership(String, SocketActivityContext)

Mentransfer kepemilikan DatagramSocket ke layanan broker soket, yang memantau aktivitas soket dan memberi tahu aplikasi melalui tugas latar belakang jika ada aktivitas.

TransferOwnership(String, SocketActivityContext, TimeSpan)

Mentransfer kepemilikan DatagramSocket ke layanan broker soket, yang memantau aktivitas soket dan memberi tahu aplikasi melalui tugas latar belakang jika ada aktivitas.

Acara

MessageReceived

Peristiwa yang menunjukkan bahwa pesan diterima pada objek DatagramSocket .

Berlaku untuk

Lihat juga