Windows 10 개발-네트워킹
요즘에는 웹 서비스 또는 네트워크의 다른 장치와 어떻게 든 통합 된 많은 응용 프로그램을 볼 수 있습니다. 온라인 날씨 콘텐츠, 최신 뉴스, 채팅 또는 P2P 게임을 가져 오는 것은 네트워크 서비스를 사용하는 몇 가지 예입니다. 이러한 앱은 다양한 네트워킹 API를 사용하여 빌드됩니다. Windows 10에서 네트워킹 API는 속도와 메모리 성능은 물론 개발자에게 제공하는 기능과 유연성 측면에서 향상되었습니다.
능력
네트워크에 연결하려면 앱 매니페스트에 적절한 기능 요소를 추가해야합니다. 앱의 매니페스트에 네트워크 기능이 지정되지 않은 경우 앱에 네트워킹 기능이 없으며 네트워크 연결 시도가 실패합니다.
다음은 가장 많이 사용되는 네트워킹 기능입니다.
S. 아니. | 기능 및 설명 |
---|---|
1 | internetClient 공항 및 커피 숍과 같은 공공 장소에서 인터넷 및 네트워크에 대한 아웃 바운드 액세스를 제공합니다. 인터넷 액세스가 필요한 대부분의 앱은이 기능을 사용해야합니다. |
2 | internetClientServer 인터넷 및 공항 및 커피 숍과 같은 공공 장소의 네트워크에서 앱 인바운드 및 아웃 바운드 네트워크 액세스를 제공합니다. |
삼 | privateNetworkClientServer 집과 직장과 같이 사용자가 신뢰할 수있는 장소에서 앱 인바운드 및 아웃 바운드 네트워크 액세스를 제공합니다. |
앱 매니페스트 파일에서 하나 이상의 기능을 정의하려면 아래에 제공된 이미지를 확인하세요.
UWP (유니버설 Windows 플랫폼)에는 다음을 대상으로하는 대규모 네트워킹 API 집합이 포함되어 있습니다.
- 장치의 연결 상태를 쿼리하고 피어 장치에 연결합니다.
- REST 웹 서비스와 통신 및
- 백그라운드에서 대용량 미디어 파일 다운로드
네트워킹 기술
UWP (유니버설 Windows 플랫폼)에서 개발자는 다양한 상황에서 사용할 수있는 다음 네트워킹 기술을 사용할 수 있습니다.
소켓
소켓은 자신의 프로토콜로 다른 장치와 통신하려는 경우 사용됩니다.
둘 다 사용할 수 있습니다. Windows.Networking.Sockets 과 Winsock UWP (유니버설 Windows 플랫폼) 앱 개발자로서 다른 장치와 통신합니다.
Windows.Networking.Sockets UWP 개발자가 사용하도록 설계된 최신 API라는 이점이 있습니다.
플랫폼 간 네트워킹 라이브러리 또는 기타 기존 Winsock 코드를 사용하는 경우 Winsock APIs.
다음 코드는 소켓 리스너를 만드는 방법을 보여줍니다.
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.
}
다음 코드는 SocketListener_ConnectionReceived 이벤트 핸들러.
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
그만큼 WebSockets프로토콜은 웹을 통해 클라이언트와 서버간에 빠르고 안전한 양방향 통신을 제공합니다. UWP (유니버설 Windows 플랫폼) 개발자는MessageWebSocket 과 StreamWebSocket Websocket 프로토콜을 지원하는 서버와 연결하기위한 클래스.
중요한 기능은-
WebSocket 프로토콜에서 데이터는 전이중 단일 소켓 연결을 통해 즉시 전송됩니다.
이를 통해 두 엔드 포인트에서 실시간으로 메시지를 보내고받을 수 있습니다.
WebSockets 즉각적인 소셜 네트워크 알림 및 최신 정보 표시 (게임 통계)가 안전하고 빠른 데이터 전송을 사용해야하는 실시간 게임에서 사용하기에 이상적입니다.
다음 코드는 보안 연결에서 메시지를 보내고받는 방법을 보여줍니다.
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
}
다음 코드는 연결된 이벤트에서 문자열을 수신하는 이벤트 구현을 보여줍니다. 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 과 Windows.Web.Http 네임 스페이스 API는 개발자에게 HTTP 2.0 및 HTTP 1.1 프로토콜을 사용하여 정보를 보내고받을 수있는 기능을 제공합니다.
그것은에 사용될 수 있습니다-
- 웹 서비스 또는 웹 서버와 통신합니다.
- 여러 개의 작은 파일을 업로드하거나 다운로드합니다.
- 네트워크를 통해 콘텐츠를 스트리밍합니다.
다음 코드는 다음을 사용하여 GET 요청을 보내는 방법을 보여줍니다. Windows.Web.Http.HttpClient 과 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;
}