Windows应用商店数据报不发送telnet数据

时间:2013-09-08 04:25:29

标签: c# udp windows-store-apps telnet datagram

我目前正在尝试将我的应用从.NET移植到Windows应用商店,但我无法让我的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以某种方式被我的应用程序阻止了?

1 个答案:

答案 0 :(得分:1)

使用TCP

为什么在翻译代码和Telnet使用TCP时使用UDP?那就是为什么Wireshark不会把它当作Telnet。至于MessageReceived上的异常,我们必须看到你的代码 - 你是否正确绑定了你的侦听套接字?