如何检测远程主机的80端口的状态?
不能使用ping,因为远程主机禁止ping。通过什么代码,可以检测出远程主机的80端口是开放或关闭的呢?我查到了如下的代码:
====================================================Try
{
   //连接你要扫描的ip以及端口,连接成功就代表端口开放。
   TcpClient client = new TcpClient(strIpaddr,intPort);
   //如果没出异常就代表连接成功,会在文本框中打印出来,反之出牞异常就代表连接不成功,下面的语句也不会运行。
   this.textBox3.Text += str + " 端口" + port + " 连接成功! ";
}
catch(SocketException e)
{
   //出现连接异常,在这里做处理;
}====================================================发现这个代码对任何一个IP都显示连接成功,不论这个IP下有没有主机的存在。实在是奇怪的很啊!
肯定是代码哪里出了问题啊!望高手指教一二,谢谢了!

解决方案 »

  1.   

    //连接你要扫描的ip以及端口,连接成功就代表端口开放。
    client = new TcpClient();
    client.Connect(currentIP, intPort);
    //如果没出异常就代表连接成功,会在文本框中打印出来,反之异常就代表连接不成功。我加上了connect(),输入了一个IP段,扫描结果还是全部连接成功!
      

  2.   

    client.Connect(currentIP, intPort); 
    你检查一下ip,port,说不定全部都是开放80端口的
      

  3.   

    呃远程主机可以放置应用程序么?能放的话放一个进去,因为同一台计算机的端口默认是不能共用的,所以在应用程序接到请求时,去尝试打开这个端口,如果异常,多半是被占用,否则就启用了。。呃无PING,无API,技术简单,编写容易是否符合你的要求?
      

  4.   


    我是要扫描一个IP段,看看究竟哪些IP是活动的,然后再诊断80端口的开放状态!明白了吧!?
      

  5.   

     TcpClient client = new TcpClient();
                    client.ReceiveTimeout = 5000;
                    client.Connect(strIpaddr, intPort);
                    NetworkStream netStream = client.GetStream();
                    string msg = netStream.ToString();
                    if (netStream.CanRead)
                    {
                        // Reads NetworkStream into a byte buffer.
                        byte[] bytes = new byte[client.ReceiveBufferSize];                    // Read can return anything from 0 to numBytesToRead. 
                        // This method blocks until at least one byte is read.
                        netStream.Read(bytes, 0, (int)client.ReceiveBufferSize);                    // Returns the data received from the host to the console.
                        string returndata = Encoding.UTF8.GetString(bytes);                    //Console.WriteLine("This is what the host returned to you: " + returndata);                }
      

  6.   

    一定要用到NetworkStream么???判断某个IP段内的远程主机的80(或其他)端口是否开放,真的这么难么?好像都没有很好的解决代码啊!!!