ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:107.67KB ,
资源ID:2968002      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2968002.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(p2p课程设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

p2p课程设计.docx

1、p2p课程设计辽 宁 工 业 大 学 基于C/S程序设计 课程设计(论文)题目: 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间: 2010.6.21至2010.7.3 课程设计(报告)任务及评语院(系):软件学院 教研室:软件教研窒学 号学生姓名 专业班级程序设计(报告)题目程序设计(报告)任务程序设计的任务与要求:(1)掌握C#语言编程的基础知识。(2)较熟练地编写C#语言应用程序。(3)了解C#语言的常用类、网络编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习

2、及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2010 年 7月 6 日目 录第1章 课程设计的目的与要求 11.1 课程设计目的 11.2 课程设计的实验环境 11.3 课程设计的预备知识 11.4 课程设计要求 1第2章 课程设计内 22.1系统功能 22.2系统设计 22.3 系统实现 42.4程序的运行和测试 9第3章 课程设计总结 1

3、2参考资料 13第1章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完C#网络程序开发案例课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C#语言课程的基本知识的理解和掌握 2. 掌握C#语言编程和程序调试的基本技能 3. 利用C#语言进行基本的网络软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C#语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。C#语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉C#语言及.NET

4、开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1系统功能局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网

5、。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。 简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。2.2系统设计开启

6、服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器可以选择接受或者拒绝客户端的连接。若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为Enable。通信双方就可以进行文字聊天了。若服务器端拒绝客户端的连接,则关闭tcpconnect,并关闭网络流,继续执行监听。客户端得知服务器端关闭tcpconnect并关闭网络流之后,则释放本次socket和网络流。

7、若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的接入。文本聊天服务器工作流程如图2.1所示图2.1流程图 2.3 系统实现1、定义相关变量。2、集成主窗体创建后,创建一个tcpListener的对象,端口为5000,IP为任意。创建监听线程wait,wait线程执行的是waitconn()方法,启动监听线程。调用getMyIP()方法用于获取本地IP地址,并在连接建立时传给对方。当wait线程监听到远程用户的接入连接请求,弹出消息提示框,用户可以选择同意或拒绝接入请求。若同意,则创建接收信息线程th,并启动th。若用户拒绝远程接入请求,则关

8、闭网络流nss,关闭tcps,并调用disconnect()重新初始化相关变量。3、接收信息时,尝试读取网络流,采用的是Unicode编码。读取到的消息如果不为断开连接信号,则在聊天记录框里面显示出来;若为断开信号,则执行disconnect()方法关闭当前连接。4、当无接入请求,则判断用户是否有尝试连接远程服务端事件。若有,创建TcpClient的对象tcpc,并尝试连接远程主机。5、连接建立后,用户单击“发送消息”按钮或者在输入文本框内按热键“Alt+S”或“Ctrl+Enter”,触发send_Click 事件。send_Click事件主要是将用户的输入通过Socket,采用网络流的形式

9、传输给远程用户,编码采用Unicode,同时在聊天记录框里面显示出来。6、断开连接或关闭窗体,需要将Socket、网络流以及接收信息线程th进行关闭,重置各按钮的可用状态。若是关闭窗体,还需将wait线程关闭。代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Net

10、;using System.Net.Sockets;using System.Threading;namespace client public partial class client : Form private TcpClient myTcpclient=null; private Thread myThread=null; private NetworkStream myNst=null; private StreamReader mySread=null; private StreamWriter mySwrite=null; public client() InitializeCo

11、mponent(); private void button2_Click(object sender, EventArgs e)/连接服务器按钮 toolStripStatusLabel1.Text = 请稍等.; myTcpclient = new TcpClient(); myTcpclient.Connect(IPAddress.Parse(textBox1.Text),int.Parse(textBox2.Text);/连接到远程服务端 myNst = myTcpclient.GetStream();/获取数据流 mySread = new StreamReader(myNst,Sy

12、stem.Text.Encoding.Default);/创建流读实例 mySwrite = new StreamWriter(myNst,System.Text.Encoding.Default);/创建流写实例 myThread = new Thread(new ThreadStart(Reading);/创建新线程,用新创建的的线程启动Reading函数 myThread.Start(); MessageBox.Show(连接服务器成功!); private void Reading()/读取对方传送过来的网络数据并在richTextBox1中显示函数实现 toolStripStatus

13、Label1.Text = 正在聊天中.; while(true) for (int i = 0; i 4; i+)/经测试发现,mySread.ReadLine()在每一次聊天内容发送之后要读四次, /第一次便是头部标志信息行,第二次读取的是聊天内容, if (i = 0)/最后两次读取的内容为空,依此设计此显示和染色函数 string youmsg = rn + mySread.ReadLine(); richTextBox1.AppendText(youmsg); else string youmsg = rn + mySread.ReadLine(); richTextBox1.App

14、endText(youmsg); richTextBox1.Select(richTextBox1.TextLength - youmsg.Length+1, youmsg.Length); richTextBox1.SelectionColor = Color.Red; private void button1_Click(object sender, EventArgs e)/“发送”按钮 string mymsg = DateTime.Now.ToString() + + rn + richTextBox2.Text + rn + rn; /MessageBox.Show(mymsg.L

15、ength.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;/对自己聊

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1