我是通用 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# 程序员。基于我对“四人帮”的了解,我对企业级模式和实践有了扎实的了解。
任何帮助将不胜感激。谢谢你。