当前位置:  开发笔记 > 编程语言 > 正文

在给定服务器的IP地址的情况下,如何使用C#测试与服务器的连接?

如何解决《在给定服务器的IP地址的情况下,如何使用C#测试与服务器的连接?》经验,为你挑选了3个好方法。

如何使用C#以编程方式确定是否可以访问具有给定IP地址的服务器?



1> Kepboy..:

您可以使用Ping类(.NET 2.0及更高版本)

    Ping x = new Ping();
    PingReply reply = x.Send(IPAddress.Parse("127.0.0.1"));

    if(reply.Status == IPStatus.Success)
        Console.WriteLine("Address is accessible");

您可能希望在生产系统中使用异步方法以允许取消等.


这有很多upvotes,但不会在每台服务器上运行.对我来说它不会起作用.http://security.stackexchange.com/questions/4440/security-risk-of-ping`通常的做法是在公开可见的服务器上禁用或阻止Ping

2> GEOCHET..:

假设您的意思是通过TCP套接字:

IPAddress IP;
if(IPAddress.TryParse("127.0.0.1",out IP)){
    Socket s = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream,
    ProtocolType.Tcp);

    try{   
        s.Connect(IPs[0], port);
    }
    catch(Exception ex){
        // something went wrong
    }
}

有关更多信息:http://msdn.microsoft.com/en-us/library/4xzx2d41.aspx?ppud = 4


声明时创建的IP实例将永远不会被使用,因为它会立即作为out参数传递,该参数将始终在被调用的方法中被替换.所以我会把实例化出来.但是你不能不将IP.TryParse更改为IPAddress.TryParse(它是一个静态方法).所以我也会改变它.

3> Tigraine..:

声明字符串地址和int端口,您就可以通过TcpClient类进行连接了.

System.Net.Sockets.TcpClient client = new TcpClient();
try
{
    client.Connect(address, port);
    Console.WriteLine("Connection open, host active");
} catch (SocketException ex)
{
    Console.WriteLine("Connection could not be established due to: \n" + ex.Message);
}
finally
{
    client.Close();
}

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有