C#电子邮箱客户端.docx
《C#电子邮箱客户端.docx》由会员分享,可在线阅读,更多相关《C#电子邮箱客户端.docx(13页珍藏版)》请在冰豆网上搜索。
![C#电子邮箱客户端.docx](https://file1.bdocx.com/fileroot1/2022-11/16/b60b4c48-0996-41da-a716-9fcb33619019/b60b4c48-0996-41da-a716-9fcb336190191.gif)
C#电子邮箱客户端
基于C/S程序设计课程设计(论文)
题目:
电子客户端
程序设计(报告)题目
电子客户端
程序设计(报告)任务
程序设计的任务与要求:
(1)掌握C#语言编程的基础知识。
(2)较熟练地编写C#语言应用程序。
(3)了解C#语言的常用类、网络编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规X完整地撰写出课程设计报告。
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C#网络程序开发案例》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C#语言课程的基本知识的理解和掌握
2.掌握C#语言编程和程序调试的基本技能
3.利用C#语言进行基本的网络软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C#语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C#语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C#语言及.NET开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1系统功能
在开发客户端前,首先需要定义程序的功能。
根据实际需要,客户端主要的功能应该有:
主界面,账户管理,账户属性设置,新建,发送/接收、接收和发送进度显示等。
在服务、容量和功能等方面都有很大的进步,特别是在的附件功能方面。
这些附件功能主要包括Flash贺卡、垃圾过滤、提醒、查毒、信息定制、相册功能、下载手机铃声等。
这些功能从多方面满足了用户的需求,相信这些附加功能也将是服务商吸引用户的必争之地,也预示着我国的服务市场将朝着大容量、多功能的方向发展。
电子地址的格式为userhostname,其中hostname为服务器的主机地址。
电子地址的第一部分是用户名(相当于传统中的收信人XX),由用户自行决定或ISP指定,该名称在同一个主机地址中是唯一的,以便服务器能够正确地将发送到每个收件人的手中。
最初免费电子大多要求用户使用浏览器打开相应站点,然后输入用户名、密码登录,最后直接在浏览器中在线从事收信、发信等操作(也就是所谓的Web收信方式)。
此方式的优点是操作比较简单,无需任何其它专用软件,只要能上网浏览,就能登录到相关站点收发。
不过该方式有一个突出的缺点,那就是非常浪费时间。
相比而言,使用客户端软件就没有这个缺点。
所谓客户端软件方式是指用户在自己的计算机上安装一些支持电子基本协议的电子软件(如OutlookExpress、Foxmail等),然后由它们将用户的从服务器下载到自己的硬盘中,在离线状态下撰写、阅读。
2.2系统设计
电子又称,Internet之上的最常用应用功能之一,使用户可以通过Internet交换形式的信息文件。
通常电子是纯文字(即纯文本)的,但是附件却可以是任意信息形式的。
用户在ISP的服务器上建立电子时取得用户专有的电子地址,网上其他用户则使用该地址向用户发送。
用户利用可以实现在Internet上相互快速地传递文件形式的“”信息,“”中可包括数字化的文图音像信息。
电子传输具有以下特点:
1、快速:
与传统的邮政信件相比,电子的时效性非常突出,一个跨洲越洋的,可能只需几秒钟就可以发到对方的“”中,并且不用麻烦任何人。
2、经济:
在线路畅通的情况下,发出一封电子只需要几秒钟,费用肯定比信件要少;与传真相比,也属经济实用。
3、易处理:
电子可以在计算机上修改或调试,易于处理。
4、可靠:
发送电子时,如果遇到对方的计算机未开机,暂时无法发送到达目的地时,Internet上的“邮局”会每隔一段时间自动重发,直到收到对方计算机发来的“已接收”的消息。
如果经过很长一段时间,接收端的计算机仍没有发回收到信息,电子系统会自动通知发送者度退还。
以电子系统为基础,又建立了更高级的应用系统,如称之为“新闻组”的专题论文交换系统,网上传真系统,电子期刊报纸订阅系统等。
其功能流程图如下:
图2.1系统功能流程图
2.3系统实现
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Threading;
usingSystem.Net.Sockets;
usingSystem.Net;
namespaceWindowsApplication1
{
publicpartialclassForm1:
Form
{
publicboolappRun=true;
privateListenerlis;
privateSendersen;
publicForm1()
{
Initializeponent();
}
publicvoidAddMessage(objectsender,AddMessageEventArgse)
{
RecText.Text+=e.mess;
}
privatevoidstart_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){;}
finally
{
lis=newListener();
lis.OnAddMessage+=newEventHandler(this.AddMessage);
lis.StartListen();
}
}
privatevoidstop_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){}
}
privatevoidsend_Click(objectsender,EventArgse)
{
if(ObjText.Text=="")
MessageBox.Show("请输入目标主机名");
elseif(SendText.Text=="")
MessageBox.Show("请输入要发送的内容");
else
{
sen=newSender(ObjText.Text);
sen.Send(SendText.Text);
}
}
privatevoidexit_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){;}
finally
{
appRun=false;
}
Application.Exit();
}
}
}
publicclassAddMessageEventArgs:
EventArgs
{
publicstringmess;
}
publicclassListener
{
privateThreadth;
privateTcpListenertcp1;
publicboollistenerRun=true;
publiceventEventHandlerOnAddMessage;
publicListener()
{}
publicvoidStartListen()
{
th=newThread(newThreadStart(Listen));
th.Start();
}
publicvoidStop()
{
tcp1.Stop();
th.Abort();
}
privatevoidListen()
{
try
{
IPAddressaddr=newIPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);
IPEndPointipLocalEndPoint=newIPEndPoint(addr,5656);
tcp1=newTcpListener(ipLocalEndPoint);
tcp1.Start();
while(listenerRun)
{
Sockets=tcp1.AcceptSocket();
stringremote=s.RemoteEndPoint.ToString();
Byte[]stream=newByte[512];
inti=s.Receive(stream);
stringmsg="<"+remote+">"+System.Text.Encoding.UTF8.GetString(stream);
AddMessageEventArgsarg=newAddMessageEventArgs();
arg.mess=msg;
OnAddMessage(this,arg);
}
}
catch(System.Security.SecurityException)
{
MessageBox.Show("防火墙禁止连接");
}
catch(Exception)
{
MessageBox.Show("监听已停止");
}
}
}
publicclassSender
{
privatestringobj;
publicSender(stringstr)
{
obj=str;
}
publicvoidSend(stringstr)
{
try
{
TcpClienttcpc=newTcpClient(obj,5656);
NetworkStreamtcpStream=tcpc.GetStream();
Byte[]data=System.Text.Encoding.ASCII.GetBytes(str);
tcpStream.Write(data,0,data.Length);
tcp