前提 C#代码在本地局域网内 有服务器S1 开发机 P1 P2 P3P1 P2 P3 都实时监控S1  看S1是否被连接例如 当S1未被连接情况下 P1 P2 P3 显示S1空闲P1远程连接S1后, P2 P3 显示P1正在使用S1怎么做呢?哪位大侠提供思路或者方法

解决方案 »

  1.   

    给你个思路吧,
    你可以监控S1的端口和状态,
    如果有连接并且连接不是自己这台计算机,
    可以视为被连接状态
    否则为空闲,
    下面一段代码只是一个思路,可以参考一下://1.
    //可定时,也可在一个按钮上写,我这是在窗体在载中写的
    //作用:通过netstat命令将信息重写向指定的目录文件中(d:\port.txt)
            private void Form1_Load(object sender, EventArgs e)
            {
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.Start();
                p.StandardInput.WriteLine(@"netstat -a -n>d:\port.txt");
                this.dataGridView1.DataSource = StuList();            
            }
    //2.再通过StreamReader类将文件读取出来,
    并可视情况将Local Address和State存入数组循环判断一下就可以得到是否有连接了,
    这样就可以判断是连接还是空闲了
      

  2.   

    socket  通讯看你基于什么 协议了 
      

  3.   

    private void Form1_Load(object sender, EventArgs e)
            {
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.Start();
                p.StandardInput.WriteLine(@"netstat -a -n>d:\port.txt");
                this.dataGridView1.DataSource = StuList();            
            }
    这个要放在S1端?
      

  4.   

    是的,主要作用是查询这台计算机所有开的端口号,连接地址,状态等
    另外 将this.dataGridView1.DataSource = StuList();   
    去掉,不好意思
      

  5.   


    你这个应用还是比较有难度的。需要服务器反馈当前远程登录用户信息
    这有段代码是c#的,你可以参考一下:http://archive.cnblogs.com/a/1935219/
    做一个socket程序,让服务器监听三个客户端,客户端可以向服务器索取当前服务器登录用户信息
    登录用户信息中包括客户端名称。链接中是服务端获取远程登录用户信息的功能。