IP地址和端口号C#

时间:2011-12-03 05:27:59

标签: c# .net client-server ip port

我正在创建一个聊天程序。我想我对MSN和其他聊天如何工作有点困惑?目前,我正在放入localhost的ip地址,只是连接到我自己。我能够让我的客户端和服务器程序来回通信。我的问题是,有没有办法我不能要求用户提供IP地址?我还手动输入我希望两个程序连接到的端口号。有没有办法避免这种情况?

我宁愿向用户询问用户名和密码!

经过一番研究后,我开始了解以下内容:

IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

但是,上面的代码行返回所有机器的IP地址。我怎么知道使用哪一个?

我对IP地址知之甚少,所以任何背景信息和帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

聊天程序使用服务器来查找客户端。登录时 - 您连接到此服务器并传递您的IP地址。同时,您获得其他客户的地址。

这是2英里的视图,但我想这是你需要知道的

您可以在应用程序中使用DNS或主机名。

获取PC的DNS名称:

System.Net.Dns.GetHostName()

要获得PC的IP地址,请使用以下内容:

var ips = System.Net.Dns.GetHostEntry(hostName);
                for (var i = 0; i <= ips.AddressList.Length - 1; i++)
                {
                    if (ips.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                        return ips.AddressList[i].ToString();
                }

答案 1 :(得分:0)

你似乎有点困惑,也许这会为你清理它。服务器是唯一一个以某种方式知道IP需要的人(通常通过dns名称确定,如chat.mydomain.com或其他东西)。一旦客户端具有该IP地址,客户端将连接到服务器。客户不需要知道自己的IP以便连接。这是自动确定的,超出了您的控制范围。一旦客户端成功连接,那么只有这样才能开始发送用户名和密码等内容。

答案 2 :(得分:0)

  

目前,我正在放入localhost的ip地址,只是连接到我自己。我能搞定   我的客户端和服务器程序来回通信。我的问题是,有没有办法让我   不能要求用户提供IP地址?

聊天软件的工作原理是通过中央KNOWN服务器运行所有流量。因此,您希望在用户然后连接到他输入的服务器(IRC)或硬编码服务器(MSN)的网站上建立聊天程序。在第一部分中,不,用户必须决定在哪里连接,在第二个你硬编码值,所以询问如何做到这一点会让你看起来不太聪明 - 这是基本的编程。

您没有找到您的IP地址,因为这是一种荒谬的方法 - 您的IP在大多数情况下甚至都无法访问。您使用CLIENT连接到服务器的方式ALWAYS并且服务器使用此连接将数据发送到客户端 - 因为大多数人都在NAT设备后面,因此他们的计算机无法从Internet轻松访问。

相关问题