Windows 10-Entwicklung - Netzwerk

Heutzutage werden Sie viele Anwendungen sehen, die sich irgendwie in Webdienste oder andere Geräte in einem Netzwerk integriert haben. Das Abrufen von Online-Wetterinhalten, neuesten Nachrichten, Chatten oder Peer-to-Peer-Spielen sind einige Beispiele für die Verwendung von Netzwerkdiensten. Diese Apps werden mit einer Vielzahl von Netzwerk-APIs erstellt. In Windows 10 werden die Netzwerk-APIs hinsichtlich ihrer Geschwindigkeit und Speicherleistung sowie der Funktionen und Flexibilität, die sie den Entwicklern bieten, verbessert.

Fähigkeiten

Um sich zu vernetzen, müssen Sie Ihrem App-Manifest entsprechende Funktionselemente hinzufügen. Wenn im Manifest Ihrer App keine Netzwerkfähigkeit angegeben ist, verfügt Ihre App über keine Netzwerkfähigkeit, und jeder Versuch, eine Verbindung zum Netzwerk herzustellen, schlägt fehl.

Im Folgenden sind die am häufigsten verwendeten Netzwerkfunktionen aufgeführt.

S.No. Fähigkeit & Beschreibung
1

internetClient

Bietet ausgehenden Zugang zum Internet und zu Netzwerken an öffentlichen Orten wie Flughäfen und Cafés. Die meisten Apps, die einen Internetzugang benötigen, sollten diese Funktion verwenden.

2

internetClientServer

Ermöglicht der App den eingehenden und ausgehenden Netzwerkzugriff über das Internet und Netzwerke an öffentlichen Orten wie Flughäfen und Cafés.

3

privateNetworkClientServer

Ermöglicht der App den eingehenden und ausgehenden Netzwerkzugriff an den vertrauenswürdigen Orten der Benutzer, z. B. zu Hause und am Arbeitsplatz.

Sehen Sie sich das folgende Bild an, um eine oder mehrere Funktionen in Ihrer App-Manifestdatei zu definieren.

Die Universal Windows Platform (UWP) enthält eine Vielzahl von Netzwerk-APIs, die auf Folgendes abzielen:

  • Abfragen des Konnektivitätsstatus des Geräts und Herstellen einer Verbindung zu den Peer-Geräten.
  • Kommunikation mit REST-Webdiensten und
  • Herunterladen großer Mediendateien im Hintergrund

Netzwerktechnologien

In der Universal Windows Platform (UWP) stehen den Entwicklern die folgenden Netzwerktechnologien zur Verfügung, die in vielen verschiedenen Situationen verwendet werden können.

Steckdosen

Sockets werden verwendet, wenn Sie mit einem anderen Gerät mit Ihrem eigenen Protokoll kommunizieren möchten.

  • Sie können beide verwenden, Windows.Networking.Sockets und Winsock als Entwickler einer Universal Windows Platform (UWP) -App mit anderen Geräten zu kommunizieren.

  • Windows.Networking.Sockets hat den Vorteil, eine moderne API zu sein, die für die Verwendung durch UWP-Entwickler entwickelt wurde.

  • Wenn Sie plattformübergreifende Netzwerkbibliotheken oder anderen vorhandenen Winsock-Code verwenden, verwenden Sie Winsock APIs.

Der folgende Code zeigt, wie Sie einen Socket-Listener erstellen.

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

Der folgende Code zeigt die Implementierung des SocketListener_ConnectionReceived Event-Handler.

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

Das WebSocketsDas Protokoll bietet eine schnelle und sichere bidirektionale Kommunikation zwischen einem Client und einem Server über das Web. Entwickler der Universal Windows Platform (UWP) können dieMessageWebSocket und StreamWebSocket Klassen für die Verbindung mit Servern, die das Websocket-Protokoll unterstützen.

Wichtige Funktionen sind -

  • Im Rahmen des WebSocket-Protokolls werden Daten sofort über eine Vollduplex-Single-Socket-Verbindung übertragen.

  • Es ermöglicht das Senden und Empfangen von Nachrichten von beiden Endpunkten in Echtzeit.

  • WebSockets sind ideal für den Einsatz in Echtzeitspielen, bei denen sofortige Benachrichtigungen über soziale Netzwerke und aktuelle Anzeigen von Informationen (Spielstatistiken) sicher sein und eine schnelle Datenübertragung ermöglichen müssen.

Der folgende Code zeigt, wie Sie Nachrichten über eine sichere Verbindung senden und empfangen.

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 
}

Der folgende Code zeigt die Ereignisimplementierung, die eine Zeichenfolge von einer verbundenen Person empfängt 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 und Windows.Web.Http Namespace-APIs bieten dem Entwickler die Möglichkeit, Informationen mithilfe der Protokolle HTTP 2.0 und HTTP 1.1 zu senden und zu empfangen.

Es kann verwendet werden, um -

  • mit einem Webdienst oder einem Webserver kommunizieren.
  • Laden Sie eine Reihe kleiner Dateien hoch oder laden Sie sie herunter.
  • Streamen Sie den Inhalt über das Netzwerk.

Der folgende Code zeigt, wie Sie eine GET-Anforderung mit senden Windows.Web.Http.HttpClient und 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; 
}