我目前正在尝试将我的应用程序从 .NET 移植到 Windows Store,但我无法让我的 UDP telnet 通信正常工作。
我在 App Manifest 中启用了 Internet(客户端)、Internet(客户端和服务器)和专用网络,并且我测试了其他 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 Store 兼容代码如下所示:
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监控时,我注意到Store App代码没有产生新的telnet流量,接收设备不处理任何发送的命令. .NET 代码在同一台机器上运行,完美无缺。
此外,如果我尝试订阅socket.MessageReceived += MessageReceived
触发事件的时间,我会在尝试调用时收到以下异常args.GetDataReader()
:
现有连接被远程主机强行关闭。(来自 HRESULT 的异常:0x80072746)
什么可能导致此数据无法从 Windows 应用商店应用程序发送?发送 telnet 数据有什么特殊限制吗?或者端口 23 是否以某种方式被我的应用程序阻止了?