编写聊天程序(很多人都这样做),我发现我希望能够让客户端自动连接到服务器。
但是,服务器的 IP 地址不是永久的,所以我不能将它硬核到程序中
在 TCP 中,我正在寻找某种广播功能,让客户端知道服务器在哪里
有什么想法吗?
编辑:应该说,这将只是一个 LAN 程序 - 没有外部连接
最佳答案
如果您正在谈论 LAN 中的聊天并且出于某种原因您不能或不想使用 DNS,您可以实现或找到 UPnP 使用的发现协议(protocol)的实现。 SSDP基于UDP广播。据我所知,不可能通过 TCP 进行多播,因为 TCP 需要一个 session 。
如果您想通过互联网使用聊天服务器,您别无选择,只能使用 DNS。寻找动态 DNS 提供商(我使用 selfhost.bz)。在 C# 中,您可以将主机名解析为 IP 地址,如其他答案中所述。如果你有一个主机名可以连接到它可能足以将它传递给套接字,但是:
socket.Connect("myhostname.selfhost.bz", ...
编辑:既然你说你在局域网中,那么关于 SSDP 的更多细节。该协议(protocol)做的比您实际需要的要多。如果您正在考虑自己实现它,请不要严格遵守它。只需让您的客户在指定端口上发送广播即可。服务器永久监听该端口,一旦收到消息,就会用预定义的消息进行应答。当客户端收到该答复时,它将知道发件人是有效的服务器。
关于c# - 自动获取服务器IP给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537598/