TCPIP课程设计答辩.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * TCP/IP协议分析课程设计答辩 班级:网安一班 答辩人:裴建民 环境介绍 开发环境:Microsoft Visual Studio 2010 编程语言:C# 使用技术:soket套接字编程,多线程 模块介绍 客户端功能: 注册新用户 登录服务器; 显示当前服务器在线用户; 群聊; 私聊; 服务器功能: 创建新用户; 验证客户端登录; 实现客户端消息的转发; 服务端 一、项目中添加windows窗体,设计如下。 1.添加listbox控件显示连接的客户端名称。 2.添加Txtbox控件控制要监听的端口。 服务端 二、服务端代码编写 服务端要的作用是监听客户端的连接请求并确认其请求。 程序一开始便打开一个StartListening()线程。 当服务器端接收到一个来自客户端的连接请求后, 它就打开一个clientservice()线程来服务客户端。当一个连接被建立后,每个客户端就被赋予一个属于它自己的套接字。同时,一个Client类的对象被建立。该对象包的一些 相关信息,该信息被保存在一个数组列表中。Client代码如下 程序的主体部分应是ServiceClient()函数。 该函数是一个独立的线程,其主要部分是一个 while循环。在循环体内,程序处理各种客户端命令。 服务器端接收来自以ASCII码给出的字符串,其中包含了一个“|”形式的分隔符。字符串中“|”以前的部分就是具体的命令,包括CONN、CHAT、PRIV、GONE四种类型。 CONN命令建立一个新的客户端连接,将现有的用户列表发送给新用户并告知其他用户有一个新用户加入。CHAT命令将新的信息发送给所有用户。PRIV命令将悄悄话发送给某个用户。GONE命令从用户列表中除去一个已离开的用户并告知其他的用户某某已经离开了。 同时,GONE命令可以设置布尔型的变量alive为false 从而结束与客户端连接的线程。ServiceClient() Serviceclient()主要代码: 客户端 这样,服务器端程序就基本完成了。接下来设计客户端 一、设计客户端窗体 往界面上添加一个ListBox控件(用于显示用户列表),一个RichTextBox控件(用于显示聊天消息以及系统消息),一个TextBox控件(用于发送消息),一个CheckBox控件(确定是否为悄悄话),一个StatusBar控件以及四个Button控件(分别为“连接”、“断开连接”、“开始记录”、“发送”)。各个控件的属性设置可以参见源代码中的具体设置,这里从略。界面设计好后的图象如下:? 客户端窗体如下: 当客户端试图和服务器端进行连接时,一个连接必须建立而且得向服务器端进行注册。creatConnection()函数运用一个TcpClient来和服务器端取得连接,同时创建一个NetworkStream来发送消息。还有,端口号和服务器端的是保持一致的。? creatConnection()函数如下: 在和服务器端连接成功后,程序就用 StoreforServer()()函数向服务器端发送一 个CONN命令。该命令先是发送该用户的名称,然后从服务器端获得其他所有用户的列表。 之后,就是用户之间的聊天了ReceiveChat()函数来完成。 该函数是一个独立的线程,它处理所有用户获得的消息和用户发送的消息。它主要处理了CHAT、PRIV、JOIN、GONE、QUIT等命令,处理的方法和服务器端的类似。 ReceiveChat()主要代码 Receivechat()主要代码如下: Receivechat()主要代码: 通过以上的一些函数,客户端程序之间就可以进行自由地聊天了,各个用户之间还可以互相发送悄悄话。所以程序已经实现了聊天室的基本功能了,不过最后各个用户还要正常地退出,那就要用到QuitChat()函数了。 程序编写过程中遇到的困难: 总结 如让每个客户端和服务端中间能够独立通讯,互不影响。 解决: 创建一个Client类包含客户端成员的名称,地址,通讯内容。每个客户端都会实例化一个新的数组,并且调用新的线程。 感谢聆听! THANK YOU FOR WATCHING! 演示结束! * * * * * *

文档评论(0)

xiangxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档