编写一个聊天程序(和很多人一样),我发现我希望能够使客户端自动连接到服务器.
但是,服务器的IP地址不会是永久的,因此我不能仅将其硬核到程序中
在TCP中,我正在寻找某种广播功能,该功能可使客户端知道服务器在哪里.
有任何想法吗?
编辑:应该说,这只会是一个LAN程序-没有外部连接
解决方法:
如果您正在谈论局域网中的聊天,并且由于某种原因而不想或不想使用DNS,则可以实现或找到UPnP使用的发现协议的实现. SSDP基于UDP广播. afaik不可能通过TCP进行多播,因为TCP需要会话.
如果要通过Internet使用聊天服务器,则只能使用DNS.寻找一个动态的dns提供程序(我使用selfhost.bz).然后,在C#中,您可以将主机名解析为IP地址,如其他答案所述.但是,如果您要连接的主机名足以将其传递给套接字,则:
socket.Connect("myhostname.selfhost.bz", ...
编辑:由于您说自己在局域网中,所以有关SSDP的更多详细信息.该协议比您实际需要做的更多.如果您想自己实现它,请不要完全坚持.只需让您的客户在指定端口上发送广播即可.一旦服务器接收到一条消息,它便会永久侦听该端口,并以预定义的消息进行应答.当客户端收到该答案时,它将知道发件人是有效的服务器.
标签:tcp,networking,ip,c
来源: https://codeday.me/bug/20191127/2075489.html