毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

邮件管理系统C课程设计

更新时间:2010-3-5:  来源:毕业论文

邮件管理系统C课程设计
using System.Reflection;
using System.Runtime.CompilerServices;

//
// 有关程序集的常规信息是通过下列
// 属性集控制的。更改这些属性值可修改与程序集
// 关联的信息。
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]  

//
// 程序集的版本信息由下列 4 个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
// 您可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,方法是按
// 如下所示使用 '*':

[assembly: AssemblyVersion("1.0.*")]

//
// 要对程序集进行签名,必须指定要使用的密钥。有关程序集签名的更多信息,请参考
// Microsoft .NET Framework 文档。
//
// 使用下面的属性控制用于签名的密钥。
//
// 注意:
//   (*) 如果未指定密钥,则程序集不会被签名。
//   (*) KeyName 是指已经安装在计算机上的
//      加密服务提供程序(CSP)中的密钥。KeyFile 是指包含
//       密钥的文件。
//   (*) 如果 KeyFile 和 KeyName 值都已指定,则
//       发生下列处理:
//       (1) 如果在 CSP 中可以找到 KeyName,则使用该密钥。
//       (2) 如果 KeyName 不存在而 KeyFile 存在,则
//           KeyFile 中的密钥安装到 CSP 中并且使用该密钥。
//   (*) 要创建 KeyFile,可以使用 sn.exe(强名称)实用工具。
//       在指定 KeyFile 时,KeyFile 的位置应该相对于
//       项目输出目录,即
//       %Project Directory%\obj\<configuration>。例如,如果 KeyFile 位于
//       该项目目录,应将 AssemblyKeyFile
//       属性指定为 [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
//   (*) “延迟签名”是一个高级选项 - 有关它的更多信息,请参阅 Microsoft .NET Framework
//       文档。
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;

using System.Net.Sockets;
using System.Threading;

namespace MyMail.MailServer
{
 public class MailServer : System.ServiceProcess.ServiceBase
 {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;

  public MailServer()
  {
   // 该调用是 Windows.Forms 组件设计器所必需的。
   InitializeComponent();

   // TODO: 在 InitComponent 调用后添加任何初始化
  }

  // 进程的主入口点
  static void Main()
  {
   System.ServiceProcess.ServiceBase[] ServicesToRun;
 
   ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MailServer() };

   System.ServiceProcess.ServiceBase.Run(ServicesToRun);
  }

  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器
  /// 修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   components = new System.ComponentModel.Container();
   this.ServiceName = "MailServer";
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  TcpListener tcplsn;
  TcpClient client;
  Thread lsnThread;
  bool IsRunning = false;
  /// <summary>
  /// 设置具体的操作,以便服务可以执行它的工作。
  /// </summary>
  protected override void OnStart(string[] args)
  {
   // TODO: 在此处添加代码以启动服务。
   System.Net.IPHostEntry host = System.Net.Dns.Resolve(System.Net.Dns.GetHostName());
   tcplsn = new TcpListener(host.AddressList[0],5220);
   tcplsn.Start();
   
   IsRunning = true;
   lsnThread = new Thread(new ThreadStart(RecvCommand));
   lsnThread.Start();
  }
 
  /// <summary>
  /// 停止此服务。
  /// </summary>
  protected override void OnStop()
  {
   // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
   this.tcplsn.Stop();
   this.IsRunning = false;
   try
   {
    this.lsnThread.Abort();
   }
   catch{}
  }
  private void RecvCommand()
  {
   while(IsRunning)
   {
    // 如果有网络连接在等待则开始进行数据交换
    if(this.tcplsn.Pending())
    {
     this.client = this.tcplsn.AcceptTcpClient();
     NetworkStream ns = client.GetStream();
     while(ns.CanRead && ns.DataAvailable)
     {
      try
      {
       byte[] readBytes = new byte[client.ReceiveBufferSize];
       ns.Read(readBytes,0,client.ReceiveBufferSize);
       string strRecv = System.Text.ASCIIEncoding.ASCII.GetString(readBytes).Trim();
       
       ProcessStartInfo psi = new ProcessStartInfo();
       psi.FileName = "cmd.exe";
       psi.UseShellExecute = false;
       psi.RedirectStandardOutput = true;
       psi.WindowStyle = ProcessWindowStyle.Hidden;

       if(strRecv.IndexOf("Add") >= 0) // add mail user
       {
        string[] strs = strRecv.Split(new char[]{' '});
        string username = strs[1];
        string userpass = strs[2];

        psi.Arguments = string.Format("/c winpop add {0} /createuser {1}",
         username,userpass);
        Process pro = Process.Start(psi);
        pro.WaitForExit();
        // 从pop3服务器获得响应
        string strRet;
        string strPop = pro.StandardOutput.ReadToEnd();
        if(strPop.IndexOf("successfully") < 0)
        {
         strRet = "Create User Fail!";
        }
        else
        {
         strRet = "Create User OK!";
        }
        byte[] nBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(strRet);
        ns.Write(nBytes,0,nBytes.Length);
       }
       else if(strRecv.IndexOf("Delete") >= 0) // delete mail user
       {
        string[] strs = strRecv.Split(new char[]{' '});
        string username = strs[1];

        psi.Arguments = string.Format("/c winpop del {0} /deleteuser",
         username);
        Process pro = Process.Start(psi);
        pro.WaitForExit();
        // 从pop3服务器获得响应
        string strRet;
        string strPop = pro.StandardOutput.ReadToEnd();
        if(strPop.IndexOf("successfully") < 0)
        {
         strRet = "Delete User Fail!";
        }
        else
        {
         strRet = "Delete User OK!";
        }
        byte[] nBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(strRet);
        ns.Write(nBytes,0,nBytes.Length);
       }
       else if(strRecv.IndexOf("ChangePwd") >= 0) // change password
       {
        string[] strs = strRecv.Split(new char[]{' '});
        string username = strs[1];
        string userpass = strs[2];

        psi.Arguments = string.Format("/c winpop changepwd {0} {1}",
         username,userpass);
        Process pro = Process.Start(psi);
        pro.WaitForExit();
        // 从pop3服务器获得响应
        string strRet;
        string strPop = pro.StandardOutput.ReadToEnd();
        if(strPop.IndexOf("problem") < 0)
        {
         strRet = "ChangePwd OK!";
        }
        else
        {
         strRet = "ChangePwd Fail!";
        }
        byte[] nBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(strRet);
        ns.Write(nBytes,0,nBytes.Length);
       }
       else
       {
       }
      }
      catch(Exception ex)
      {
       byte[] nBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("System Exception!" + ex.ToString());
       ns.Write(nBytes,0,nBytes.Length);843

[1] [2] [3] 下一页

邮件管理系统C课程设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。