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