Windows.Networking.Sockets.MessageWebSocket(ConnectAsync) 每次尝试连接时不会刷新主机 IP (DNS)

问题描述 投票:0回答:1

我有一个 UWP 应用程序尝试启动与主机 test.mydomain.com 的 Websocket 连接(请注意,该主机不存在)

_websocket = new MessageWebSocket();
_websocket.Control.MessageType = SocketMessageType.Utf8;

_websocket.Closed += _websocket_Closed;
_websocket.MessageReceived += _websocket_MessageReceived;

Uri aoUri = new Uri(url);
                
_websocket.ConnectAsync(aoUri).Completed = (source, status) =>
{
   OnLog("_websocket.Information: " + _websocket.Information);

    if (status == AsyncStatus.Completed)
    {
        messageWriter = new DataWriter(_websocket.OutputStream);
        IsOpen = true;
        OnOpened();
    }
    else if (status == AsyncStatus.Error)
    {
        RaiseError(source.ErrorCode);
        EndConnection();
    }
};

当我开始测试时,我的主机文件中有

1.1.1.1 test.mydomain.com

在wireshark端,我可以看到多次尝试连接到主机(1.1.1.1 test.mydomain.com)

过滤器:ip.dst==1.1.1.1 和 tcp.port==443

在 Windows 端,如果我运行 ipconfig /display dns 一切都可以

如果我将主机文件更改为

2.2.2.2 test.mydomain.com

在 Windows 端,如果我运行 ipconfig /display dns,我会看到变化

在wireshark方面,

  • 我看不到连接到主机的尝试(2.2.2.2 test.mydomain.com) 过滤器:ip.dst==2.2.2.2 和 tcp.port==443

  • 我看到该组件继续调用(1.1.1.1 test.mydomain.com) 过滤器:ip.dst==1.1.1.1 和 tcp.port==443

每次我们尝试使用 MessageWebSocket 连接时,主机名似乎都没有解析

有谁知道为什么吗?

注意:

  1. 每次连接尝试时都会释放并重新创建对象
  2. 如果我重新启动我的应用程序,该工作就会起作用,并且我会看到尝试连接到与我的主机文件中的一个设置相关的主机
  3. 如果在尝试连接之前请求 Dns.GetHostEntry(aoUri.Host),则 Dns.GetHostEntry 会返回与 messageWebSocket 相比的良好值。
c# network-programming websocket uwp wireshark
1个回答
0
投票

我也有同样的问题。 这个问题有更新吗?

© www.soinside.com 2019 - 2024. All rights reserved.