我想知道一个人如何连接到服务器应用程序,如果你只知道它在同一个网络上运行?典型的套接字连接需要一个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;
}
答案 0 :(得分:1)
我会使用UDP广播。
服务器必须侦听UDP端口,并回复此端口上的广播。
客户端首先会为此UDP端口广播一个数据包,然后等待回复。
回复将包含IP地址以及客户端使用服务器所需的任何信息。
在初始UDP通信之后,可以建立常规TCP连接。