如何自动测试与Windows 2003服务器的连接?

时间:2009-08-13 18:21:22

标签: .net windows-server-2003 rdp

我正在编写一个应用程序来测试与一组VM Windows 2003服务器的RDP连接。典型的故障模式是服务器上运行的某些代码使自己处于循环中,从而阻止RDP连接 - 以及大多数任何其他类型的连接。当发生这种情况时,您仍然可以ping服务器,它似乎没问题,但是你不能做其他任何事情。

我正在使用C#,.NET 3.5和RDP版本6.1 - 我尝试启动ActiveX RDP客户端(MSTSC ..),但这需要人工干预并且不能很好地工作。我在这里找到了另一篇文章,其中有一个可能来自Expert Sexchange的解决方案,但该解决方案使用了Java和我无法访问的Net :: Telnet库。

来自.NET阵营的任何想法?

谢谢, 戴夫

2 个答案:

答案 0 :(得分:0)

如果获得连接,断开连接并报告成功,如果连接被拒绝报告失败,请使用TCPClient尝试连接到3389上的服务器(或您配置的任何端口)。

 class Program
    {
       static void Main(string[] args)
        {
            RDPAvailable("someserver", 3389);
        }
        public static bool RDPAvailable(string remoteHost, int port)
        {
            bool available=false;
            try
            {
                TcpClient client = new TcpClient(remoteHost, port);
                client.Close();
                available = true;
            }
            catch (Exception ex)
            {
                //do some logging or whatnot 
            }
            return available;
    }

编辑:一些方便的代码

MsRdpClient51.Server = somServer
MsRdpClient51.UserName = somUserID
MsRdpClient51.Domain = someDomain
MsRdpClient51.AdvancedSettings6.ClearTextPassword = somePassword
MsRdpClient51.Connect

答案 1 :(得分:0)

您可以使用未记录的WinStationServerPing API来检查与终端服务器的连接。基本上,如果此功能成功,则意味着终端服务器可用。

这是函数的(Delphi)签名(从winsta.dll导出):

function WinStationServerPing(hServer: HANDLE): BOOLEAN; stdcall;