C# 服务器客户端在连接 UWP 时失败

本文关键字:UWP 失败 连接 服务器 客户端 | 更新日期: 2023-09-27 17:57:10

我尝试在 UWP 上使用简单的 TCP 客户端服务器进行通信,我点击了此链接 UWP 套接字,但看起来它不起作用。我已经为这两个应用程序添加了提供客户端和服务器的功能。即使它没有出现在代码中,我也处理了错误,这给了我以下内容: System.Runtime.InteropServices.COMException (0x8007274C): A connection attemps has failed because the connected part has not answer after a certain amount of time or the connection has failed because host has not respond

System.Runtime.InteropServices.COMException (0x8007274C): Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu.

据我所知,它在生产线上失败await clientSocket.ConnectAsync(serverHost, serverPort);

就目前而言,它应该在Rasperry Pi 3上运行服务器,在Windows 10移动设备上运行客户端(Lumia 950 XL内部版本14385),但直到现在我只在运行Windows 10 Pro的Surface Pro 3上运行(内部版本14385)

客户

try
{
        StreamSocket clientSocket;
        clientSocket = new StreamSocket();
        HostName serverHost = new HostName("localhost");
        string serverPort = "5464";
        await clientSocket.ConnectAsync(serverHost, serverPort);
        Stream streamOut = clientSoket.OutputStream.AsStreamForWrite();
        StreamWriter writer = new StreamWriter(streamOut);
        string request = "test";
        await writer.WriteLineAsync(request);
        await writer.FlushAsync();
        Stream streamIn = clientSocket.InputStream.AsStreamForRead();
        StreamReader reader = new StreamReader(streamIn);
        string response = await reader.ReadLineAsync();
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.ToString());//handle
    }

服务器

try
{
    serverSocket = new StreamSocketListener();
    serverSocket.ConnectionReceived += ServerSocket_ConnectionReceived;
    await serverSocket.BindServiceNameAsync("5464");
}
catch(Exception e)
{
    Console.WriteLine(e.ToString());//handle
}
private async void ServerSocket_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
    Stream inputStream = args.Socket.InputStream.AsStreamForRead();
    StreamReader reader = new StreamReader(inputStream);
    string request = await reader.ReadLineAsync();
        Stream outputStream = args.Socket.OutputStream.AsStreamForWrite();
    StreamWriter writter = new StreamWriter(outputStream);
    await writter.WriteLineAsync("Ok");
    await writter.FlushAsync();
}

C# 服务器客户端在连接 UWP 时失败

经过一些研究并感谢斯图尔特史密斯,似乎两个应用程序无法直接相互连接。出于开发目的,可以在本地计算机上允许它,使用工具启用网络环回。当我尝试在我的 lumia 上运行客户端和 PC 上的服务器时,它运行得很好。

以下是用于理解这一点的链接。

StackOverFlow UWP Enable Loopback

在旁加载的 Windows 应用商店应用中使用网络环回