Clients C # Universal Windows StreamSocket ne se connectant pas au serveur StreamSocketListener

J’essaie d’utiliser C # et UWP pour écrire un serveur de socket simple. Jusqu’à présent, j’ai écrit une classe SocketServer en C # que vous pouvez sous-classer; Je veux que ce soit comme un serveur de sockets dans Node.js.

Cependant, j’ai essayé de me connecter à ce serveur à partir de Python REPL et d’un client C #, mais les deux fois la connexion a expiré. J’ai comparé mon code avec l’exemple StreamSocket de Microsoft sur Github, et je n’arrive pas à comprendre ce que je fais mal. Je ne sais pas si c’est un problème avec mon code ou avec certaines configurations réseau sur mon ordinateur.

Voici ma superclasse de serveur:

... abstract class SocketServer { public SocketServer() { } public async void Listen(Ssortingng port) { StreamSocketListener serverSocket = new StreamSocketListener(); await serverSocket.BindServiceNameAsync("8003"); serverSocket.ConnectionReceived += ClientConnectionReceived; Debug.WriteLine("Server started"); } private void ClientConnectionReceived( StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) { Debug.WriteLine("Client connection received"); OnConnection(args.Socket); DataReader reader = new DataReader(args.Socket.InputStream); try { // fill in later } catch { // fill in later } } abstract protected void OnConnection(StreamSocket socket); abstract protected void OnData(Ssortingng data); abstract protected void OnEnd(); } } 

Voici la sous-classe de ce serveur:

 class Subclass: SocketServer { override protected void OnConnection(StreamSocket socket) { Debug.WriteLine("Got connection"); } override protected void OnData(Ssortingng data) { } override protected void OnEnd() { } } 

Voici le code qui instancie le serveur (dans App.xaml.cs):

  public App() { ... Debug.WriteLine("=========================="); Subclass manager = new Subclass(); manager.Listen("8003"); } 

Et enfin, voici le code client C # (dans App.xaml.cs):

 public App() { ... Debug.WriteLine("========================"); StartClient(); } async void StartClient() { try { Debug.WriteLine("About to connect"); StreamSocket socket = new StreamSocket(); Debug.WriteLine("Made StreamSocket"); await socket.ConnectAsync(new HostName("localhost"), "8003"); Debug.WriteLine("Connected"); } catch (Exception ex) { Debug.WriteLine(ex.Message); Exit(); } } 

Il affiche “About to connect” et “Made SocketStream”, mais après un certain temps, il y a une erreur de timeout.

Qu’est-ce que je fais mal?

Vous connectez-vous depuis une autre machine? Vous ne pouvez pas vous connecter à un StreamSocketListener à partir d’une autre application ou processus exécuté sur le même ordinateur, même avec une exemption de bouclage . Vous devrez exécuter le client sur un autre ordinateur.