2011-04-13 191 views
0

我有兩個應用程序一個是客戶端等爲斷絕,怎麼客戶端應用程序自動檢測服務器應用程序,如果服務器應用程序正在運行如何將多個客戶端連接到服務器

請告訴我最好的方法,該

+0

這是一個編程問題,或者你已經有了服務器/客戶端應用程序? – SWeko 2011-04-13 10:17:20

+0

你是什麼意思,請擴展你的想法 – V4Vendetta 2011-04-13 10:17:49

+0

爲什麼不讓客戶端嘗試連接到服務器? – Blorgbeard 2011-04-13 10:20:34

回答

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

好!客戶如何聽這個請求 – 2011-04-13 10:32:26

+0

由於您的問題已關閉,請谷歌廣播,並有一些例子 – BugFinder 2011-04-13 10:49:02

相關問題