【发布时间】:2012-01-02 17:58:30
【问题描述】:
我已经开始使用 C# 进行套接字编程。以前,我有一些在 Java 下使用套接字的经验; C# 一切都很好,除了:
C# 套接字不会自动获取 IP 地址。在Java中,服务器套接字只需要一个端口,然后在构造它们时,会自动获取一个可以由方法返回的可用IP(我不记得那个方法的名字了)。
在 C# 中,必须为服务器套接字指定 IP,否则无法构造。我希望套接字自动找到一个 IP,但我尝试了IPAddress.any,它只返回0.0.0.0,这很奇怪(我什至不知道这意味着什么!监听每个 IP?)
服务器套接字的IP地址可以通过localEndPoint属性返回,所以我只想让套接字获取一个IP,然后我会用那个方法弄清楚它是什么。
这怎么可能?
【问题讨论】:
-
我很容易出错,但我认为 0.0.0.0 是一个特殊情况,它表示使用任何 IP 地址。我相信在 C++ 中进行套接字编程时也会发生这种情况。
-
@KshitijMehta 你完全正确。这就是它的意思 - 每个可用的 ip。
-
感谢您的评论,但这仍然不能回答问题。我不希望我的程序使用任何 IP,因为,比如说,我想从远程客户端将套接字连接到该服务器。我应该给这个套接字什么地址? 0.0.0.0??
-
在 0.0.0.0 上监听意味着 所有 IP 地址,所以是的 - 将用于接受远程连接。
-
但这怎么可能呢?所有IP地址?我说的是通过网络连接!如果此套接字正在侦听所有 IP 地址,那么它应该接受任何请求来自任何地方的连接的套接字!