我有两个应用程序,一个是Client,另一个是服务器,如果服务器应用程序正在运行,客户端应用程序如何自动检测服务器应用程序
请告诉我这方面的最佳方法
答案 0 :(得分:1)
如果您知道服务器的IP,那么尝试连接,如果它只是在本地网络上“运行某处”就可以发送广播
一个例子:(不是我的代码,借来的)
public static void Main()
{
Advertise server = new Advertise();
}
public Advertise()
{
Thread advert = new Thread(new ThreadStart(sendPackets));
advert.IsBackground = true;
advert.Start();
Console.Write("Press Enter to stop");
string data = Console.ReadLine();
}
void sendPackets()
{
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
sock.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.Broadcast, 1);
IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050);
string hostname = Dns.GetHostName();
byte[] data = Encoding.ASCII.GetBytes(hostname);
while (true)
{
sock.SendTo(data, iep);
Thread.Sleep(60000);
}
}
然后客户端侦听广播,如果它收到一个或多个响应,它可以为用户提供你想要连接的内容。
这当然只适用于本地网络(没有防火墙/子网)
否则,您必须询问用户服务器的位置
答案 1 :(得分:0)
您的应用程序尝试连接到服务器
服务器回复。
服务器正在运行。
您的应用程序尝试连接到服务器 服务器没有回复 服务器未运行或存在其他问题。