C# “如何知道”;远程主机的DNS名称“;计算机的功能?

C# “如何知道”;远程主机的DNS名称“;计算机的功能?,c#,C#,我有两个程序用于通过UDP协议(客户端和服务器)相互通信,但是当客户端使用Connect方法连接到服务器时( 字符串主机名, 内部端口 ),什么也没发生。 这是代码: udpclient.Connect("asuspc",6500); string duongdan = tbduongdan.Text; Byte[] sendbyte = Encoding.ASCII.GetBytes(duongdan);

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

                udpclient.Connect("asuspc",6500);
            string duongdan = tbduongdan.Text;
            Byte[] sendbyte = Encoding.ASCII.GetBytes(duongdan);
            udpclient.Send(sendbyte, sendbyte.Length);
“asuspc”是我打算连接的计算机的名称。
经过一段时间的了解,我知道主机名是“远程主机的DNS名称”,而不是计算机的名称,那么什么是“远程主机的DNS名称”?如何知道计算机的“远程主机的DNS名称”?

Uhm。。。我认为读一点TCP/IP会对您有很大帮助:-)

每台机器都有一个指定的IP地址。为了不必记住那些长的IP地址,DNS服务器已经创建,因此您可以编写“host.domain.com”,您的DNS服务器会告诉您这个“机器DNS名称”对应于IP地址xx.xx.xx.xx

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

机器的NSU查找ip地址

示例:nslookup 192.168.1.2

希望对您有所帮助。

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

然后获得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

然后在客户端,您可以使用缓冲区接收数据。根据定义,UDP是一种无连接协议。您无需连接即可发送/接收数据

请注意,在
UdpClient
对象上调用
Connect()
,这样您就不必在每次使用
Send
方法时都指定它。因此,不要期望在客户端调用
Connect
方法之后发生任何事情

这样一来,如果你的服务器和客户端都在你的私人局域网上,为什么不使用计算机的IP呢?e、 g


两台计算机都在你的局域网上吗?是的。他们是。你能给我一些解决这个问题的建议吗?请看。这是一个供程序员提问与编程有关的问题的网站。谢谢你上面的回答!但如果我的服务器和客户端都不在我的专用局域网上,那么我该怎么做才能在客户端和服务器之间建立连接?@huyleuit,不客气。如果您的服务器不在LAN上,那么如果它有一个众所周知的主机名,例如
meta.stackoverflow.com
,您可以使用它。DNS服务器可以将主机名解析为IP地址,目前
meta.stackoverflow.com
的IP地址为
69.59.197.21
。所以,正如您所看到的,它最终需要一个IP地址来连接,所以如果您知道服务器的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
// 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);