DatagramSocket Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
- 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:
- Buat DatagramSocket.
- Gunakan properti Kontrol untuk mengambil objek DatagramSocketControl dan mengatur kontrol tingkat lanjut apa pun. Langkah ini biasanya tidak diperlukan oleh sebagian besar aplikasi.
- Tetapkan peristiwa MessageReceived ke penanganan aktivitas.
- 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.
- Untuk berkomunikasi dengan satu titik akhir jarak jauh (skenario klien, misalnya), panggil metode ConnectAsync untuk mengikat DatagramSocket ke titik akhir jarak jauh tertentu.
- 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
- DatagramSocketControl
- DatagramSocketInformation
- DatagramSocketMessageReceivedEventArgs
- IClosable
- Soket
- Menyambungkan dengan soket
- Menangani pengecualian di aplikasi jaringan
- Cara menyambungkan dengan soket datagram
- Cara menyambungkan dengan soket datagram
- Cara menggunakan kontrol soket tingkat lanjut
- Memecahkan masalah dan men-debug koneksi jaringan
- SetSocketMediaStreamingMode
- Sampel DatagramSocket
- Sampel DatagramSocket (Windows 10)