我是Universal Windows Apps(Win 10)的新手。我正在尝试将控制台应用程序移植到UWP,作为自定义Windows服务应用程序的远程测试和管理控制台。我似乎无法找到任何可靠的示例代码来演示在MainPage.xaml.cs文件中放置套接字侦听器的位置(或者它应该去的任何地方)。我成功地将MSDN示例移植到一个方法中,该方法使用Json序列化PCL模型对象并将其发送到服务器。我似乎无法正确处理听众。我不认为我在正确的地方使用它,特别是在涉及异步使用时。我有协议\端口使用错误,因为它基本上说它已经打开(我只是在测试方法中抛出它)。我想反序列化收到的Json响应并使用它来填充List。以下是我发送内容的示例。
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中注意到我从微软培训网站的“C#Hello World”示例开始。
我还想补充一点,我不打算使用任何HTTP,因为Json对象会发生一些自定义加密和其他“事情”,需要单独的端口。
我对使用XAML和C#(Unleashed)书籍的通用Windows应用程序已经不够了,甚至不知道我在做什么。然而,我是其他平台上经验丰富的C#程序员,如MVC,Windows服务,控制台等。基于我对“四人帮”的了解,我对企业课程模式和实践有了深刻的理解。
非常感谢任何帮助。谢谢。
答案 0 :(得分:1)
(https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DatagramSocket)
这是一个示例。此示例中有CPP
,js
和cs
代码,我只测试了cs
代码。希望这可以帮到你。