您好,欢迎来好库! [ 请登录 ] [ 免费注册 ] 好库网首页 | 我的好库
好库网
好饱的专栏
好饱

.NET技巧:用TcpClient类测试网络服务

所属分类:所有分类 » 软件开发 » .NET » C#
发布者:好饱
发布日期:2011-2-22 16:21:50   更新日期:2011-2-22 16:21:50
浏览次数:277
阅读次数:439
评分:4.90
介绍:本文介绍了TcpClient类的简单使用方法。
正文:

 

测试服务器是否在运行时非常有用的,还可用于测试服务是否正常运行。
这些应用大部分不是web services,web services可以用HttpWebRequest来测试。
FTP,SMTP/POP3邮箱等服务,你可以用TcpClient 类去测试。TcpClient类位于System.Net.Sockets库中,
因此需确认你已经在代码中引用了该库。
下面的例子测试两个邮件服务器是否正确回应:

 

测试服务器是否在运行有时是非常有用的,还可用于测试服务器中的应用服务是否正常运行。

这些应用大部分不是web services,web services可以用HttpWebRequest来测试。

FTP,SMTP/POP3邮箱等服务,你可以用TcpClient 类去测试。TcpClient类位于System.Net.Sockets库中,

因此需确认你已经在代码中引用了该库。

下面的例子测试两个邮件服务器是否正确回应:

ArrayList addrs = new ArrayList();
addrs.Add("mail.northcomp.com");
addrs.Add("mail2.northcomp.com");
addrs.Add("mail3.northcomp.com");

byte[] returnBuffer;
foreach (string s in addrs)
{
   TcpClient c = new TcpClient();
   try
   {
      c.Connect(s, 25);
      NetworkStream ns = c.GetStream();
      if (ns.CanRead)
      {
         returnBuffer = new byte[c.ReceiveBufferSize];
         int bytesRead = ns.Read(returnBuffer, 0,
                                 (int)c.ReceiveBufferSize);
         Console.WriteLine("Result from {0}:", s);
         Console.WriteLine(Encoding.UTF8.GetString
                           (returnBuffer).Substring(0, bytesRead));
         ns.Close();
      }
      c.Close();
   }
   catch (Exception ex)
   {
      Console.WriteLine("Error connecting to {0}.", s);
      Console.WriteLine("Exception:");
      Console.WriteLine(ex.ToString());
   }
}

Console.WriteLine("Mail server check completed.");
这些代码首先创建TcpClient对象,然后连接到主机的25端口(SMTP的默认端口).
检测NetworkStream能否读到数据,如果可以,将数据放入缓冲。Read函数返回正确读取了
多少数据,你可以用该值修改缓冲和剩余的空间。缓冲数据显示时需要用Encoding.UTF8.GetString方法,
否则,数据将无法正确显示。
在例子中,前面的两个地址被使用,最后一个没有。因为会产生一个错误,异常被抛出,错误显示在
控制台窗口中。如果成功,窗口中显示接收到的文字。每个连接到SMTP端口的连接都会受到来自服务器
的问候信息。可以查看返回的文字校验服务器是否响应正确。
你可以简单地改变代码,从其它端口读取数据,如FTP,POP3等,你只需要在用Connect函数连接时改变
端口号。

 

 

 


评论 [发表评论]
  • 挺好!顶顶!

    5
    dengxm

    2011-2-24 14:44:53


更多评论

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。