www.pudn.com > mailreveive.rar > Pop3Connection.cs


using System; 
using System.IO; 
using System.Net.Sockets; 
 
namespace Pop3Com 
{ 
	///  
	/// Pop3Connection 的摘要说明。 
	///  
	internal class Pop3Connection 
	{ 
		// 成员变量 
		private TcpClient socket; 
		private StreamReader reader; 
		private StreamWriter writer; 
		private bool connected; 
 
		///  
		/// 连接状态 
		///  
		public bool Connected 
		{ 
			get{return connected;} 
		} 
 
		///  
		/// 创建一个新的连接 
		///  
		internal Pop3Connection() 
		{ 
			socket = new TcpClient();			 
		} 
 
		///  
		/// 在默认的端口上打开一个和主机的连接 
		///  
		/// 要连接的主机名 
		internal void Open(string host) 
		{ 
			Open(host, 25); 
		} 
		 
		///  
		/// 在某端口上打开一个和主机的连接 
		///  
		/// 要连接的主机名 
		/// 要连接的端口号 
		internal void Open(string host, int port) 
		{ 
			if(host == null || host.Trim().Length == 0 || port <= 0) 
			{ 
				throw new System.ArgumentException("Invalid Argument found."); 
			} 
			socket.Connect(host, port); 
			reader = new StreamReader(socket.GetStream(), System.Text.Encoding.ASCII); 
			writer = new StreamWriter(socket.GetStream(), System.Text.Encoding.ASCII); 
			connected = true; 
		} 
 
		///  
		/// 关闭连接 
		///  
		internal void Close() 
		{ 
			reader.Close(); 
			writer.Flush(); 
			writer.Close(); 
			reader = null; 
			writer = null; 
			socket.Close(); 
			connected = false; 
		} 
 
		///  
		/// 给主机发送一个命令 
		///  
		/// 要发送的命令 
		internal void SendCommand(string cmd) 
		{ 
			writer.WriteLine(cmd); 
			writer.Flush(); 
		} 
 
		///  
		/// 给主机发送数据,用来发送附件 
		///  
		/// 数据缓存 
		/// 数据缓存的开始点 
		/// 数据长度 
		internal void SendData(char[] buf, int start, int length) 
		{ 
			writer.Write(buf, start, length); 
		} 
 
		///  
		/// 从主机获取响应信息 
		///  
		/// 从主机获取的文本信息 
		/// 从主机获取的状态码 
		internal void GetReply(out string reply, out int code) 
		{ 
			reply = reader.ReadLine(); 
			code = reply == null ? -1 : Int32.Parse(reply.Substring(0, 3));			 
		} 
	} 
}