如何知道计算机的“远程主机的DNS名称”?

时间:2012-11-13 09:27:33

标签: c#

我有两个程序用于通过UDP协议(客户端和服务器)相互通信,但是当客户端使用Connect方法连接到服务器时(     字符串主机名,     int端口 ), 没啥事儿。 这是代码:

                udpclient.Connect("asuspc",6500);
            string duongdan = tbduongdan.Text;
            Byte[] sendbyte = Encoding.ASCII.GetBytes(duongdan);
            udpclient.Send(sendbyte, sendbyte.Length);

“asuspc”是我打算连接的计算机的名称。 经过一段时间才发现,我知道主机名是“远程主机的DNS名称”而不是计算机的名称,那么什么是“远程主机的DNS名称”?如何知道“的DNS名称计算机的远程主机?

3 个答案:

答案 0 :(得分:0)

嗯......我认为一点TCP / IP阅读会对你有所帮助: - )

每台计算机都有一个分配的IP地址。为了不必记住这些长IP地址,创建了DNS服务器,因此您可以编写“host.domain.com”,并且您的DNS服务器会告诉您此“计算机DNS名称”与IP地址xx.xx.xx对应.XX。

说,要知道机器的“DNS名称”,在windows(和linux)下你可以写:

nslookup ip_address_of_the_machine

示例:nslookup 192.168.1.2

希望有所帮助。

答案 1 :(得分:0)

在服务器端,(仅获取IP地址的代码)

// get the ip and port number where the client will be listening on
static IPEndPoint GetClientInfo()
{
    // wait for client to send data
    using (UdpClient listener = new UdpClient(6500))
    {
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 6500);
        byte[] receive_byte_array = listener.Receive(ref groupEP);

        return groupEP;
    }
}

然后获取IP

var ip = clientInfo.Address.ToString();
    var port = clientInfo.Port;

UdpClient client = new UdpClient(new IPEndPoint( IPAddress.Any, 6500));
client.Connect(ip, port);  // use ip address

然后在客户端,您可以使用缓冲区

接收数据

答案 2 :(得分:0)

根据定义,UDP是一种无连接协议。您无需连接即可发送/接收数据。

请注意,在Connect()对象does nothing other than setting a default remote host上调用UdpClient,这样您就不必在每次使用Send方法时都指定它。因此,在客户端调用Connect方法后,不要指望任何“发生”。

有了这个,如果您的服务器和客户端都在您的专用LAN上,为什么不使用计算机的IP? e.g。

// replace 192.168.1.44 with the server's private IP
udpclient.Connect("192.168.1.44",6500);
string duongdan = tbduongdan.Text;
Byte[] sendbyte = Encoding.ASCII.GetBytes(duongdan);
udpclient.Send(sendbyte, sendbyte.Length);