p2p课程设计Word文件下载.docx
- 文档编号:15879010
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:13
- 大小:107.67KB
p2p课程设计Word文件下载.docx
《p2p课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《p2p课程设计Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
学号
学生姓名
专业班级
程序设计(报告)题目
程序设计(报告)任务
程序设计的任务与要求:
(1)掌握C#语言编程的基础知识。
(2)较熟练地编写C#语言应用程序。
(3)了解C#语言的常用类、网络编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2010年7月6日
目录
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内2
2.1系统功能2
2.2系统设计2
2.3系统实现4
2.4程序的运行和测试9
第3章课程设计总结12
参考资料13
第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系统功能
局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。
局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。
P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。
这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。
目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。
简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。
P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。
P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。
P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。
P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。
在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。
2.2系统设计
开启服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。
收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器可以选择接受或者拒绝客户端的连接。
若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。
客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为Enable。
通信双方就可以进行文字聊天了。
若服务器端拒绝客户端的连接,则关闭tcpconnect,并关闭网络流,继续执行监听。
客户端得知服务器端关闭tcpconnect并关闭网络流之后,则释放本次socket和网络流。
若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的接入。
文本聊天服务器工作流程如图2.1所示
图2.1流程图
2.3系统实现
1、定义相关变量。
2、集成主窗体创建后,创建一个tcpListener的对象,端口为5000,IP为任意。
创建监听线程wait,wait线程执行的是waitconn()方法,启动监听线程。
调用getMyIP()方法用于获取本地IP地址,并在连接建立时传给对方。
当wait线程监听到远程用户的接入连接请求,弹出消息提示框,用户可以选择同意或拒绝接入请求。
若同意,则创建接收信息线程th,并启动th。
若用户拒绝远程接入请求,则关闭网络流nss,关闭tcps,并调用disconnect()重新初始化相关变量。
3、接收信息时,尝试读取网络流,采用的是Unicode编码。
读取到的消息如果不为断开连接信号,则在聊天记录框里面显示出来;
若为断开信号,则执行disconnect()方法关闭当前连接。
4、当无接入请求,则判断用户是否有尝试连接远程服务端事件。
若有,创建TcpClient的对象tcpc,并尝试连接远程主机。
5、连接建立后,用户单击“发送消息”按钮或者在输入文本框内按热键“Alt+S”或“Ctrl+Enter”,触发send_Click事件。
send_Click事件主要是将用户的输入通过Socket,采用网络流的形式传输给远程用户,编码采用Unicode,同时在聊天记录框里面显示出来。
6、断开连接或关闭窗体,需要将Socket、网络流以及接收信息线程th进行关闭,重置各按钮的可用状态。
若是关闭窗体,还需将wait线程关闭。
代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Net;
usingSystem.Net.Sockets;
usingSystem.Threading;
namespaceclient
{
publicpartialclassclient:
Form
{
privateTcpClientmyTcpclient=null;
privateThreadmyThread=null;
privateNetworkStreammyNst=null;
privateStreamReadermySread=null;
privateStreamWritermySwrite=null;
publicclient()
InitializeComponent();
}
privatevoidbutton2_Click(objectsender,EventArgse)//"
连接服务器"
按钮
toolStripStatusLabel1.Text="
请稍等......"
;
myTcpclient=newTcpClient();
myTcpclient.Connect(IPAddress.Parse(textBox1.Text),int.Parse(textBox2.Text));
//连接到远程服务端
myNst=myTcpclient.GetStream();
//获取数据流
mySread=newStreamReader(myNst,System.Text.Encoding.Default);
//创建流读实例
mySwrite=newStreamWriter(myNst,System.Text.Encoding.Default);
//创建流写实例
myThread=newThread(newThreadStart(Reading));
//创建新线程,用新创建的的线程启动Reading函数
myThread.Start();
MessageBox.Show("
连接服务器成功!
"
);
}
privatevoidReading()//读取对方传送过来的网络数据并在richTextBox1中显示函数实现
正在聊天中......"
while(true)
for(inti=0;
i<
4;
i++)//经测试发现,mySread.ReadLine()在每一次聊天内容发送之后要读四次,
{ //第一次便是头部标志信息行,第二次读取的是聊天内容,
if(i==0) //最后两次读取的内容为空,依此设计此显示和染色函数
stringyoumsg="
\r\n"
+mySread.ReadLine();
richTextBox1.AppendText(youmsg);
else
richTextBox1.Select(richTextBox1.TextLength-youmsg.Length+1,youmsg.Length);
richTextBox1.SelectionColor=Color.Red;
privatevoidbutton1_Click(objectsender,EventArgse)//“发送”按钮
stringmymsg=DateTime.Now.ToString()+"
<
+"
来自:
客户端"
>
+richTextBox2.Text+"
//MessageBox.Show(mymsg.Length.ToString());
mySwrite.WriteLine(mymsg);
//将自己聊天内容写入内存缓冲区
mySwrite.Flush();
//将缓冲区内容发入网络流并清空
richTextBox2.Clear();
//清空聊天内容编辑框
richTextBox1.AppendText(mymsg);
//调用appendtext()函数,在聊天内容显示框显示自己聊天内容
richTextBox1.Select(richTextBox1.TextLength-mymsg.Length+29,mymsg.Length);
//选取自己的聊天内容
richTextBox1.SelectionColor=Color.Blue;
//对自己聊
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- p2p 课程设计