C# 检查具有特定端口的服务器上的状态

C# 检查具有特定端口的服务器上的状态,c#,.net,client,server,status,C#,.net,Client,Server,Status,我需要检查本地网络中所有计算机的状态。但是我的代码无效,因为里面有很长的响应。我尝试了线程,检查程序在后台运行。但我需要更快的检查。我的程序作为客户机服务器运行 在我的主程序中,我需要将可用计算机写入列表框。 例如: 我的主要客户希望在本地网络中获得可用的计算机。计算机的服务器在端口13000上运行。但是,当我想找出可用的计算机时,我的回答太长了 变数 检查可用计算机: 若列表变量和临时变量中的值相同,则旧地址将不会添加到列表中 我解决了我的问题。当我将UDP广播数据包发送到UDP侦听器客户端时

我需要检查本地网络中所有计算机的状态。但是我的代码无效,因为里面有很长的响应。我尝试了线程,检查程序在后台运行。但我需要更快的检查。我的程序作为客户机服务器运行

在我的主程序中,我需要将可用计算机写入列表框。 例如:

我的主要客户希望在本地网络中获得可用的计算机。计算机的服务器在端口13000上运行。但是,当我想找出可用的计算机时,我的回答太长了

变数

检查可用计算机:


若列表变量和临时变量中的值相同,则旧地址将不会添加到列表中

我解决了我的问题。当我将UDP广播数据包发送到UDP侦听器客户端时,发送方的IP地址将被传输到发送新数据包给最后一个发送方。原始发件人服务器将从远程客户端接收新的IP地址

我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该这样做。
string message = "!";
string temp = "";
public static string list = "";
public static void checker()
    {
        string IP;
        int statResp = 0;

        for (int i = 1; i < 10; i++)
        {              
            IP = "192.168.0." + i;

            string msg = "!";

            try
            {
                Int32 port = 13000;

                TcpClient client = new TcpClient(IP, port);


                Byte[] data = System.Text.Encoding.ASCII.GetBytes(msg);
                msg = "!";


                NetworkStream stream = client.GetStream();


                stream.Write(data, 0, data.Length);

                data = new Byte[256];
                String responseData = String.Empty;

                Int32 bytes = stream.Read(data, 0, data.Length);
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                if (responseData == " " || responseData == "!")
                {
                    statResp = 1; // response is correct server runs
                }
                stream.Close();
                client.Close();
            }
            catch (ArgumentNullException)
            {
                continue; // continue with next iteration
            }
            catch (SocketException)
            {
              continue; // continue with next iteration
            }
            if (statResp == 1)
            {
                list = IP; // list is variable
            }
        } 
    }
private void timer2_Tick(object sender, EventArgs e)
    {
        if (temp != list)
        {
            listBox1.Items.Add(list);
            temp = list;
        }
    }