Pengembangan Windows 10 - Jaringan
Saat ini, Anda akan melihat banyak aplikasi, yang entah bagaimana telah terintegrasi dengan layanan web atau perangkat lain di jaringan. Mengambil konten cuaca online, berita terbaru, chatting atau permainan peer-to-peer adalah beberapa contoh yang menggunakan layanan jaringan. Aplikasi ini dibuat menggunakan berbagai macam API jaringan. Di Windows 10, API jaringan ditingkatkan dalam hal kecepatan dan kinerja memori serta kemampuan dan fleksibilitas yang mereka berikan kepada pengembang.
Kemampuan
Untuk membuat jaringan, Anda harus menambahkan elemen kemampuan yang sesuai ke manifes aplikasi Anda. Jika tidak ada kemampuan jaringan yang ditentukan dalam manifes aplikasi Anda, aplikasi Anda tidak akan memiliki kemampuan jaringan, dan segala upaya untuk menyambung ke jaringan akan gagal.
Berikut ini adalah kapabilitas jaringan yang paling sering digunakan.
S.No. | Kemampuan & Deskripsi |
---|---|
1 | internetClient Menyediakan akses keluar ke Internet dan jaringan di tempat umum, seperti bandara dan kedai kopi. Sebagian besar aplikasi yang membutuhkan akses Internet harus menggunakan kemampuan ini. |
2 | internetClientServer Memberi aplikasi akses jaringan masuk dan keluar dari Internet dan jaringan di tempat umum seperti bandara dan kedai kopi. |
3 | privateNetworkClientServer Memberi aplikasi akses jaringan masuk dan keluar di tempat tepercaya pengguna, seperti rumah dan kantor. |
Untuk menentukan satu atau lebih kemampuan dalam file manifes aplikasi Anda, lihat gambar yang diberikan di bawah ini.
Platform Windows Universal (UWP) berisi sekumpulan besar API jaringan dengan menargetkan berikut ini -
- Menanyakan status konektivitas perangkat dan menghubungkan ke perangkat peer.
- Berkomunikasi dengan layanan web REST dan
- Mendownload file media besar di latar belakang
Teknologi Jaringan
Di Universal Windows Platform (UWP), teknologi jaringan berikut tersedia untuk pengembang, yang dapat digunakan dalam banyak situasi berbeda.
Soket
Soket digunakan saat Anda ingin berkomunikasi dengan perangkat lain dengan protokol Anda sendiri.
Anda bisa menggunakan keduanya, Windows.Networking.Sockets dan Winsock untuk berkomunikasi dengan perangkat lain sebagai pengembang aplikasi Universal Windows Platform (UWP).
Windows.Networking.Sockets memiliki keuntungan sebagai API modern, yang dirancang untuk digunakan oleh pengembang UWP.
Jika Anda menggunakan pustaka jaringan lintas platform atau kode Winsock lain yang sudah ada, gunakan Winsock APIs.
Kode berikut menunjukkan cara membuat pendengar soket.
try {
//Create a StreamSocketListener to start listening for TCP connections.
Windows.Networking.Sockets.StreamSocketListener socketListener = new
Windows.Networking.Sockets.StreamSocketListener();
//Hook up an event handler to call when connections are received.
socketListener.ConnectionReceived += SocketListener_ConnectionReceived;
//Start listening for incoming TCP connections on the specified port.
You can specify any port that's not currently in use.
await socketListener.BindServiceNameAsync("1337");
} catch (Exception e) {
//Handle exception.
}
Kode berikut menunjukkan implementasi dari SocketListener_ConnectionReceived penanganan acara.
private async void SocketListener_ConnectionReceived(
Windows.Networking.Sockets.StreamSocketListen er sender,
Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args){
//Read line from the remote client.
Stream inStream = args.Socket.InputStream.AsStreamForRead();
StreamReader reader = new StreamReader(inStream);
string request = await reader.ReadLineAsync();
//Send the line back to the remote client.
Stream outStream = args.Socket.OutputStream.AsStreamForWrite();
StreamWriter writer = new StreamWriter(outStream);
await writer.WriteLineAsync(request);
await writer.FlushAsync();
}
WebSocket
Itu WebSocketsprotokol menyediakan komunikasi dua arah yang cepat dan aman antara klien dan server melalui web. Pengembang Universal Windows Platform (UWP) dapat menggunakan fileMessageWebSocket dan StreamWebSocket kelas untuk terhubung dengan server yang mendukung protokol Websocket.
Fitur penting adalah -
Di bawah Protokol WebSocket, data ditransfer segera melalui koneksi soket tunggal dupleks penuh.
Ini memungkinkan pesan untuk dikirim dan diterima dari kedua titik akhir secara real time.
WebSockets ideal untuk digunakan dalam permainan waktu nyata di mana pemberitahuan jejaring sosial instan dan tampilan informasi terkini (statistik permainan) harus diamankan dan menggunakan transfer data yang cepat.
Kode berikut menunjukkan cara mengirim dan menerima pesan pada koneksi yang aman.
MessageWebSocket webSock = new MessageWebSocket();
//In this case we will be sending/receiving a string so we need to
set the MessageType to Utf8.
webSock.Control.MessageType = SocketMessageType.Utf8;
//Add the MessageReceived event handler.
webSock.MessageReceived += WebSock_MessageReceived;
//Add the Closed event handler.
webSock.Closed += WebSock_Closed;
Uri serverUri = new Uri("wss://echo.websocket.org");
try {
//Connect to the server.
await webSock.ConnectAsync(serverUri);
//Send a message to the server.
await WebSock_SendMessage(webSock, "Hello, world!");
} catch (Exception ex) {
//Add code here to handle any exceptions
}
Kode berikut menunjukkan implementasi acara, yang akan menerima string dari terhubung WebSocket.
//The MessageReceived event handler.
private void WebSock_MessageReceived(MessageWebSocket sender,
MessageWebSocketMessageReceivedEventArgs args){
DataReader messageReader = args.GetDataReader();
messageReader.UnicodeEncoding = UnicodeEncoding.Utf8;
string messageString = messageReader.ReadString(
messageReader.UnconsumedBufferLength);
//Add code here to do something with the string that is received.
}
HttpClient
HttpClient dan Windows.Web.Http API namespace, memberikan kemampuan kepada pengembang untuk mengirim dan menerima informasi menggunakan protokol HTTP 2.0 dan HTTP 1.1.
Ini dapat digunakan untuk -
- berkomunikasi dengan layanan web atau server web.
- Unggah atau unduh sejumlah file kecil.
- Alirkan konten melalui jaringan.
Kode berikut menunjukkan cara mengirim permintaan GET menggunakan Windows.Web.Http.HttpClient dan Windows.Web.Http.HttpResponseMessage.
//Create an HTTP client object
Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient();
//Add a user-agent header to the GET request.
var headers = httpClient.DefaultRequestHeaders;
//The safe way to add a header value is to use the TryParseAdd method
and verify the return value is true,
//especially if the header value is coming from user input.
string header = "ie";
if (!headers.UserAgent.TryParseAdd(header)) {
throw new Exception("Invalid header value: " + header);
}
header = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
if (!headers.UserAgent.TryParseAdd(header)) {
throw new Exception("Invalid header value: " + header);
}
Uri requestUri = new Uri("http://www.contoso.com");
//Send the GET request asynchronously and retrieve the response as a string.
Windows.Web.Http.HttpResponseMessage httpResponse = new
Windows.Web.Http.HttpResponseMessage();
string httpResponseBody = "";
try {
//Send the GET request
httpResponse = await httpClient.GetAsync(requestUri);
httpResponse.EnsureSuccessStatusCode();
httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
} catch (Exception ex) {
httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message;
}