Windows 10 Geliştirme - Ağ Oluşturma

Günümüzde, bir şekilde web servisleriyle veya bir ağdaki diğer cihazlarla entegre olmuş birçok uygulama göreceksiniz. Çevrimiçi hava durumu içeriği, en son haberler, sohbet veya eşler arası oyunlar, ağ hizmetlerini kullanan bazı örneklerdir. Bu uygulamalar, çok çeşitli ağ API'leri kullanılarak oluşturulmuştur. Windows 10'da, ağ API'leri hızları ve bellek performanslarının yanı sıra geliştiricilere sağladıkları yetenekler ve esneklik açısından geliştirildi.

Yetenekler

Ağ oluşturmak için, uygulama bildiriminize uygun yetenek öğeleri eklemeniz gerekir. Uygulamanızın bildiriminde herhangi bir ağ özelliği belirtilmezse, uygulamanızın ağ oluşturma yeteneği olmaz ve ağa bağlanma girişimleri başarısız olur.

Aşağıdakiler en çok kullanılan ağ oluşturma yetenekleridir.

S.No. Yetenek ve Açıklama
1

internetClient

Havaalanları ve kafe gibi halka açık yerlerdeki İnternet ve ağlara giden erişim sağlar. İnternet erişimi gerektiren çoğu uygulama bu özelliği kullanmalıdır.

2

internetClientServer

Uygulamaya İnternetten ve havalimanları ve kafeler gibi halka açık yerlerdeki ağlardan gelen ve giden ağ erişimi sağlar.

3

privateNetworkClientServer

Uygulamaya gelen ve giden ağ erişimini kullanıcıların ev ve iş gibi güvenilen yerlerde sağlar.

Uygulama manifest dosyanızda bir veya daha fazla özellik tanımlamak için aşağıda verilen resme bakın.

Evrensel Windows Platformu (UWP), aşağıdakileri hedefleyerek çok sayıda ağ API'si içerir:

  • Cihazın bağlantı durumunu sorgulama ve eş cihazlara bağlanma.
  • REST web servisleri ile iletişim ve
  • Arka planda büyük medya dosyalarını indirme

Ağ Teknolojileri

Evrensel Windows Platformunda (UWP), birçok farklı durumda kullanılabilen aşağıdaki ağ teknolojileri geliştiriciler için mevcuttur.

Soketler

Başka bir cihazla kendi protokolünüzle iletişim kurmak istediğinizde soketler kullanılır.

  • İkisini de kullanabilirsiniz, Windows.Networking.Sockets ve Winsock Evrensel Windows Platformu (UWP) uygulama geliştiricisi olarak diğer cihazlarla iletişim kurmak için.

  • Windows.Networking.Sockets UWP geliştiricileri tarafından kullanılmak üzere tasarlanmış modern bir API olma avantajına sahiptir.

  • Çapraz platform ağ kitaplıklarını veya diğer mevcut Winsock kodunu kullanıyorsanız, Winsock APIs.

Aşağıdaki kod, bir yuva dinleyicisinin nasıl oluşturulacağını gösterir.

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. 
}

Aşağıdaki kod, SocketListener_ConnectionReceived olay işleyicisi.

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

WebSocketsprotokol, bir istemci ile bir sunucu arasında web üzerinden hızlı ve güvenli bir çift yönlü iletişim sağlar. Evrensel Windows Platformu (UWP) geliştiricileri,MessageWebSocket ve StreamWebSocket Websocket protokolünü destekleyen sunuculara bağlanmak için sınıflar.

Önemli özellikler -

  • WebSocket Protokolü altında, veriler tam çift yönlü tek soketli bağlantı üzerinden anında aktarılır.

  • Mesajların her iki uç noktadan gerçek zamanlı olarak gönderilmesine ve alınmasına izin verir.

  • WebSockets Anlık sosyal ağ bildirimlerinin ve güncel bilgi görüntülemelerinin (oyun istatistikleri) güvenli olması ve hızlı veri aktarımını kullanması gereken gerçek zamanlı oyunlarda kullanım için idealdir.

Aşağıdaki kod, güvenli bir bağlantıda nasıl mesaj gönderilip alınacağını gösterir.

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 
}

Aşağıdaki kod, bağlı bir diziden bir dize alacak olay uygulamasını gösterir. 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 ve Windows.Web.Http ad alanı API'leri, geliştiriciye HTTP 2.0 ve HTTP 1.1 protokollerini kullanarak bilgi gönderme ve alma yeteneği sağlar.

Kullanılabilir -

  • bir web hizmeti veya web sunucusu ile iletişim kurun.
  • Birkaç küçük dosya yükleyin veya indirin.
  • İçeriği ağ üzerinden yayınlayın.

Aşağıdaki kod, kullanarak bir GET isteğinin nasıl gönderileceğini gösterir. Windows.Web.Http.HttpClient ve 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; 
}