Envoyer des données à partir d’applications client UWP vers le serveur en panne avec l’erreur System.Runtime.InteropServices.COMException (0x8007274D)

Je souhaite créer un serveur afin que HoloLens, l’application UWP, puisse s’y connecter et y envoyer des données.

Donc, pour créer le serveur, j’ai créé une application console dans Visual Studio et suivi l’exemple ici

Et du côté client, l’application UWP, j’ai créé la classe ci-dessous:

using UnityEngine; #if !UNITY_EDITOR && UNITY_METRO using System; using System.Text; using System.Collections; using System.Collections.Generic; using Windows.Networking.Sockets; using Windows.Storage.Streams; using Windows.Networking; using Windows.Foundation; #endif public class SendSocketStreamClient { // The port number for the remote device. private int port; private ssortingng serverIP; public SendSocketStreamClient(int portNum, ssortingng ip){ port = portNum; serverIP = ip; } #if !UNITY_EDITOR && UNITY_METRO private StreamSocket networkConnection; // The response from the remote device. private static Ssortingng response = Ssortingng.Empty; public void StartClient() { // Setup a connection to the server. HostName networkHost = new HostName(serverIP); networkConnection = new StreamSocket(); IAsyncAction outstandingAction = networkConnection.ConnectAsync(networkHost, port.ToSsortingng()); AsyncActionCompletedHandler aach = new AsyncActionCompletedHandler(NetworkConnectedHandler); outstandingAction.Completed = aach; } public void NetworkConnectedHandler(IAsyncAction asyncInfo, AsyncStatus status) { // Status completed is successful. if (status == AsyncStatus.Completed) { DataWriter networkDataWriter; // Since we are connected, we can send the data we set aside when establishing the connection. using (networkDataWriter = new DataWriter(networkConnection.OutputStream)) { networkDataWriter.WriteBytes(Encoding.ASCII.GetBytes("Sending Trial 1")); // Again, this is an async operation, so we'll set a callback. DataWriterStoreOperation dswo = networkDataWriter.StoreAsync(); dswo.Completed = new AsyncOperationCompletedHandler(DataSentHandler); } } else { // TODO resend Debug.Log("Failed to establish connection. Error Code: " + asyncInfo.ErrorCode); networkConnection.Dispose(); } } public void DataSentHandler(IAsyncOperation operation, AsyncStatus status) { if (status == AsyncStatus.Error) { // didn't send, so requeue Debug.Log("Error while sending " + operation.ErrorCode); } // Always disconnect here since we will reconnect when sending the next data. networkConnection.Dispose(); } #endif } 

J’appelle alors cette classe dans un script C #:

 #if !UNITY_EDITOR && UNITY_METRO SendSocketStreamClient newClient = new SendSocketStreamClient(ConnectionPort, ServerIP.Trim()); newClient.StartClient(); #endif 

Mais je reçois toujours l’erreur ci-dessous.

Impossible d’établir la connexion. Code d’erreur: System.Runtime.InteropServices.COMException (0x8007274D): aucune connexion n’a pu être établie car l’ordinateur cible l’a activement refusé.

Une idée de ce que je fais mal ou comment envoyer des données de HoloLens au serveur? Y a-t-il un problème avec le serveur?

—–Modifier—-

Impossible d’établir la connexion. Code d’erreur: System.Runtime.InteropServices.COMException (0x8007274C): Une tentative de connexion a échoué car la partie connectée n’a pas répondu correctement après un certain temps ou la connexion établie a échoué car l’hôte connecté n’a pas pu répondre.

L’erreur a changé à ce qui précède lorsque je définis le serverIP pour être l’adresse IP de ma machine au lieu de 127.0.0.1. Donc, je pense que lui donner la bonne adresse IP a résolu cette erreur mais maintenant il ne se connecte pas au serveur.

Est-ce que cela signifie que la façon dont j’ai créé le serveur n’est pas correcte?

Comme dit dans les commentaires ci-dessus et comme ici j’ai trouvé que dans le serveur que j’utilise

  IPAddress ipAddress = IPAddress.Loopback; 

au lieu de

 IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; 

La modification de ce problème a résolu mon problème et j’ai pu me connecter au serveur à partir de HoloLens et recevoir des données.