C# 套接字连接到具有未知 IP 的服务器应用程序

C# Socket connection to server app with unknown IP

我想知道如果您只知道它 运行 正在同一网络上,那么如何连接到服务器应用程序?典型的套接字连接需要一个 IP 地址才能连接,但如果它是未知的怎么办?有没有其他方法可以在没有 IP 的情况下连接或以某种方式确定服务器应用程序的 IP?

我问这个是因为在我看来,必须将服务器 IP 硬编码到客户端应用程序中,或者让用户在 运行 时间手动输入它似乎是不切实际的?当你在一个由 DHCP 服务器自动分配 IP 的网络上时,你永远无法确定服务器应用程序 运行 正在使用哪个 IP,除非你给那台机器一个静态 IP,这是我想避免的。

希望我的询问足够清楚。

var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        try
        {
            socket.Connect(serverIP, serverPort); <- this line is what I want and alternate to
            client = new TGHClient(socket);
            client.Received += client_Received;
            client.Disconnected += client_Disconnected;

        }

我会使用 UDP 广播。

服务器必须侦听 UDP 端口,并回复此端口上的广播。

客户端首先会为此UDP端口广播一个数据包,然后等待回复。

回复将包含 IP 地址和客户端使用服务器所需的任何信息。

在此初始 UDP 通信之后,可以建立常规 TCP 连接。