说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
本文介绍了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函数连接时改变
端口号。

 

 

 

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘