Windows 应用商店数据报不发送远程登录数据
本文关键字:程登录 登录 数据 应用 数据报 Windows | 更新日期: 2023-09-27 18:30:30
我目前正在尝试将我的应用程序从.NET移植到Windows Store,但我无法让我的UDP telnet通信正常工作。
我已经在应用程序清单中启用了互联网(客户端)、互联网(客户端和服务器)和专用网络,并且我测试了其他 UDP 通信并且它们已成功,但是当我尝试发送 telnet 命令时,它不起作用。
特别是我正在处理的代码是以下 C# 的翻译:
var client = new TcpClient("192.168.1.152", 23);
var stream = client.GetStream();
try
{
var encoder = new ASCIIEncoding();
var outBuffer = new byte[_bufferSize];
var buffer = encoder.GetBytes(command);
await stream.WriteAsync(buffer, 0, buffer.Length);
return true;
}
catch (IOException)
{
return false;
}
我的 Windows 应用商店兼容代码如下所示:
var socket = new DatagramSocket();
var hostName = new HostName("192.168.1.152");
var stream = await _socket.GetOutputStreamAsync(_hostName, "23");
var writer = new DataWriter(stream);
writer.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8;
try
{
var buffer = Encoding.UTF8.GetBytes(command);
writer.WriteBytes(buffer);
await writer.StoreAsync();
return true;
}
catch (IOException)
{
return false;
}
代码运行,方法返回 true(无异常),但是当我使用 WireShark 运行代码并进行监视时,我注意到应用商店应用代码没有生成新的 telnet 流量,并且接收设备不会处理发送的任何命令。 在同一台计算机上运行的 .NET 代码完美运行。
此外,如果我尝试在触发事件时订阅socket.MessageReceived += MessageReceived
,则在尝试调用args.GetDataReader()
时会出现以下异常:
远程主机强行关闭了现有连接。(HRESULT的例外:0x80072746)
什么可能导致此数据无法从 Windows 应用商店应用发送? 发送远程登录数据是否有任何特殊限制? 还是端口 23 以某种方式被阻止进入我的应用程序?
使用 TCP
当您要翻译的代码和 Telnet 使用 TCP 时,为什么使用 UDP?这就是为什么Wireshark不把它当作Telnet的原因。至于 MessageReceived 上的异常,我们必须查看您的代码 - 您是否正确绑定了侦听套接字?
;)