1

我是通用 Windows 应用程序(Win 10)的新手。我正在尝试将控制台应用程序移植到 UWP,它充当自定义 Windows 服务应用程序的远程测试和管理控制台。我似乎找不到任何可靠的示例代码来演示在 MainPage.xaml.cs 文件中放置套接字侦听器的位置(或它应该去的任何地方)。我已经成功地将 MSDN 示例移植到使用 Json 序列化 PCL 模型对象并将其发送到服务器的方法中。我似乎无法正确处理听众。我不认为我在正确的地方使用它,尤其是在异步使用方面。我遇到协议\端口使用错误,因为它基本上是在说它已经打开(我只是在测试方法中扔了它)。我想反序列化收到的 Json 响应并使用它来填充列表。这是一个对我有用的发送示例。

    private async void Pulse(string target)
    {

        if (target == null || target == string.Empty)
        {
            greetingOutput.Text = "No Ip specified";
            return;
        }


        else
        {

            try
            {

                Windows.Networking.Sockets.StreamSocket socket = new Windows.Networking.Sockets.StreamSocket();
                Windows.Networking.HostName serverHost = new Windows.Networking.HostName(target);
                await socket.ConnectAsync(serverHost, serverPort);
                Stream streamOut = socket.OutputStream.AsStreamForWrite();
                StreamWriter writer = new StreamWriter(streamOut);
                HeartBeatPing heartBeatPing = new HeartBeatPing(GetLocalIp(), target);
                string msg = JsonConvert.SerializeObject(heartBeatPing);
                await writer.WriteLineAsync(msg);
                await writer.FlushAsync();
                Stream streamIn = socket.InputStream.AsStreamForRead();
                StreamReader reader = new StreamReader(streamIn);
                string response = await reader.ReadLineAsync();


            }
            catch (Exception xCeption)
            {
                greetingOutput.Text += "\n" + xCeption.ToString();
            }

        }

    }

你们中的一些人可能会从 greetingsOutput.text 中注意到,我从 Microsoft 培训站点中的“C# Hello World”示例开始。

我还想补充一点,我不会为此使用任何 HTTP,因为需要单独端口的 Json 对象会发生一些自定义加密和其他“事情”。

我对使用 XAML 和 C# (Unleashed) 的通用 Windows 应用程序的了解还不够深入,甚至无法知道我在做什么。然而,我是其他平台(如 MVC、Windows 服务、控制台等)中经验丰富的 C# 程序员。基于我对“四人帮”的了解,我对企业级模式和实践有了扎实的了解。

任何帮助将不胜感激。谢谢你。

4

1 回答 1

1

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DatagramSocket

这是一个示例。此示例中有CPPjscs代码,我只测试了cs代码。希望这可以帮助你。

于 2015-11-26T01:17:41.100 回答