版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、环境(hunjng)介绍开发环境:Microsoft Visual Studio 2010编程语言:C#使用(shyng)技术:soket套接字编程,多线程第1页/共18页第一页,共19页。模块(m kui)介绍客户端功能:注册新用户登录服务器;显示当前服务器在线(zi xin)用户;群聊;私聊;服务器功能: 创建新用户;验证客户端登录;实现客户端消息的转发;第2页/共18页第二页,共19页。服务端一、项目中添加(tin ji)windows窗体,设计如下。1.添加(tin ji)listbox控件显示连接的客户端名称。2.添加(tin ji)Txtbox控件控制要监听的端口。第3页/共18页
2、第三页,共19页。服务端二、服务端代码编写服务端要的作用是监听客户端的连接请求(qngqi)并确认其请求(qngqi)。程序一开始便打开一个StartListening()线程。第4页/共18页第四页,共19页。当服务器端接收到一个来自客户端的连接(linji)请求后,它就打开一个clientservice()线程来服务客户端。当一个连接(linji)被建立后,每个客户端就被赋予一个属于它自己的套接字。同时,一个Client类的对象被建立。该对象包的一些相关信息,该信息被保存在一个数组列表中。Client代码如下第5页/共18页第五页,共19页。程序的主体部分应是ServiceClient()
3、函数。 该函数是一个独立的线程,其主要部分是一个while循环。在循环体内,程序处理各种客户端命令。服务器端接收来自以ASCII码给出的字符串,其中包含了一个“|”形式的分隔符。字符串中“|”以前的部分就是具体的命令,包括CONN、CHAT、PRIV、GONE四种类型。 CONN命令建立一个新的客户端连接,将现有的用户列表发送给新用户并告知其他用户有一个新用户加入。CHAT命令将新的信息发送给所有用户。PRIV命令将悄悄话发送给某个用户。GONE命令从用户列表中除去一个已离开的用户并告知其他的用户某某已经离开了。 同时(tngsh),GONE命令可以设置布尔型的变量alive为false从而结
4、束与客户端连接的线程。ServiceClient()第6页/共18页第六页,共19页。Serviceclient()主要(zhyo)代码:第7页/共18页第七页,共19页。第8页/共18页第八页,共19页。客户端 这样,服务器端程序就基本(jbn)完成了。接下来设计客户端一、设计客户端窗体往界面上添加一个ListBox控件(用于显示(xinsh)用户列表),一个RichTextBox控件(用于显示(xinsh)聊天消息以及系统消息),一个TextBox控件(用于发送消息),一个CheckBox控件(确定是否为悄悄话),一个StatusBar控件以及四个Button控件(分别为“连接”、“断开连
5、接”、“开始记录”、“发送”)。各个控件的属性设置可以参见源代码中的具体设置,这里从略。界面设计好后的图象如下: 第9页/共18页第九页,共19页。客户端窗体如下(rxi):第10页/共18页第十页,共19页。 当客户端试图和服务器端进行连接时,一个连接必须(bx)建立而且得向服务器端进行注册。creatConnection()函数运用一个TcpClient来和服务器端取得连接,同时创建一个NetworkStream来发送消息。还有,端口号和服务器端的是保持一致的。 creatConnection()函数如下:第11页/共18页第十一页,共19页。在和服务器端连接成功后,程序就用Storefo
6、rServer()()函数向服务器端发送一个CONN命令(mng lng)。该命令(mng lng)先是发送该用户的名称,然后从服务器端获得其他所有用户的列表。第12页/共18页第十二页,共19页。 之后,就是用户之间的聊天了ReceiveChat()函数来完成。 该函数是一个独立的线程,它处理所有用户获得的消息和用户发送的消息。它主要(zhyo)处理了CHAT、PRIV、JOIN、GONE、QUIT等命令,处理的方法和服务器端的类似。 ReceiveChat()主要(zhyo)代码第13页/共18页第十三页,共19页。Receivechat()主要代码(di m)如下:第14页/共18页第十
7、四页,共19页。Receivechat()主要(zhyo)代码:第15页/共18页第十五页,共19页。 通过以上的一些函数(hnsh),客户端程序之间就可以进行自由地聊天了,各个用户之间还可以互相发送悄悄话。所以程序已经实现了聊天室的基本功能了,不过最后各个用户还要正常地退出,那就要用到QuitChat()函数(hnsh)了。第16页/共18页第十六页,共19页。程序(chngx)(chngx)编写过程中遇到的困难:总结(zngji)如让每个客户端和服务端中间能够独立(dl)通讯,互不影响。解决:解决: 创建一个Client类包含客户端成员的名称,地址,通讯内容。每个客户端都会实例化一个新的数组,并且调用新的线程。第17页/共18页第十七页,共19页。感谢您的观看(gunkn)!第18页/共18页第十八页,共19页。NoImage内容(nirng)总结环境介绍。服务端要的作用是监听客户端的连接请求并确认其请求。相关信息,该信息被保存在一个数组列表中。服务器端接收来自以ASCII码给出的字符串,其中包含了一个“|”形式的分隔符。各个控件的属性设置可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年生化化工药品技能考试-脱硫装置操作工考试历年参考题库含答案解析
- 2026年煤炭矿山职业技能鉴定考试-翻矸机司机考试历年参考题库含答案解析
- 2026年火电电力职业技能鉴定考试-电力职工应知应会知识历年参考题库含答案解析
- 2026年集团员工门禁出入管理办法
- 2026年江苏省常熟市高二生物上册期末考试测试卷含答案(培优)
- 2026 江苏 事业编综合岗结构化面试考前模拟训练卷含解析
- 2026 山东市场监管岗事业编普通面试含答案解析
- 小学美术教资面试色彩题库 2026下半年
- 高中历史教资面试世界史专项试卷
- 2026下半年高中语文教资面试诗歌鉴赏真题及解析
- 2026年软考网络工程师完整试题及答案
- 雨课堂学堂在线学堂云《新时代中国特色社会主义理论与实践(东北农业大学)》单元测试考核答案
- 学校各功能室管理制度汇编
- 2026高考英语【全国二卷】试卷及参考答案(含听力音频、听力原文)
- 2026年上海松江国有资产投资经营管理集团有限公司招聘笔试参考题库附带答案详解
- 【《某变电站(220kV110kV10kV)短路电流的计算过程案例》3000字】
- 初中英语《定语从句》高频考点练习题及答案(100题)
- 贝贝南瓜栽培技术
- 农业技术交流会
- 处方权授权课件
- 广东省七年级上学期月考数学试卷十套附参考答案
评论
0/150
提交评论