我想知道如果您只知道服务器应用程序在同一网络上运行,它将如何连接到服务器应用程序?典型的套接字连接需要一个 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 连接。