p2p即时聊天系统

p2p即时聊天系统

ID:30786634

大小:280.40 KB

页数:19页

时间:2019-01-03

p2p即时聊天系统_第1页
p2p即时聊天系统_第2页
p2p即时聊天系统_第3页
p2p即时聊天系统_第4页
p2p即时聊天系统_第5页
资源描述:

《p2p即时聊天系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一、课程设计题目基于P2P的局域网即时通信系统二、实验环境及工具1・计算机:PC机,PC虚拟机,2.操作系统:Windows2000,WindowsXP3.程序设计语言:VC6.0三、设计要求1.实现一个图形用户界面局域网内的消息系统。2.功能:建立一个局域网内的简单的P2P消息系统,程序既是服务器乂是客户,服务器端口使用3333oa)用户注册及对等方列表的获取:对等方A启动后,用户设置自己的信息(用户名,所在组);扫描网段屮在线的对等方(3333端口打开),向所有在线对等方的服务端口发送消息,接收方接收

2、到消息后,把对等方A加入到自己的用户列表中,并发应答消息;对等方A把回应消息的其它对等方加入用户列表。双方交换的消息格式自己根据需要定义,至少包括用户名、IP地址。b)发送消息和文件:用户在列表屮选择用户,与用户建立TCP连接,发送文件或消息。3.用户界面:界面上包括对等方列表;消息显示列表;消息输入框;文件传输进程显示及操作按钮或菜单。四、设计内容与步骤1.学习Socket和TCP的基木原理和通信机制;2.功能设计和界面设计3.服务器功能的设计和实现4•客户功能的设计和实现5.课程设计任务说明书五、方案

3、设计1.消息格式本系统采用的消息格式是,文件头+消息内容文件头为T・9,消息格式分配如下:本机名:登陆,发送给所有在线对等方的服务端口'24本机名:对登陆消息的回馈34本机名:退出W+本机名:对话请求“51”或”52”:对话请求的冋应(是否同意)8+本机名+”退出对话J退出对话7+对话内容:对话8+文件名长度+文件名+文件长度(转换成CString):请求传送“91”同意传输“92”拒绝“93”磁盘已满2.该软件分别开了3个监听端口:3333、3334、3335。之所以分开3个端口是因为各种传送的不同,在

4、设计实验的过程中我发现对于登陆消息,退出消息,应该用的socket是即用即断,即比如我收到登陆消息,并发送冋馈消息后就断开连接,这样就不用一个用户同时连接很多用户,如果用完不断,就是全连接了。而文件传输应该跟对话传输分开,因此应该再开一个端口。3.在线用户的扫描:本软件是通过扫描局域网内的在线用户(不一定打开软件),然后一一发送登陆信息,如果收到登陆信息就在列表上增加用户并发送冋馈,如果收到回馈就在列表上增加用户,如果收到退出消息就删除用户。4.文件传输原本打算使用多线程文件传输,及发送端开多个线程同时读

5、一个文件并发送,接收端在磁盘开辟一个与接收文件大小一致的一个文件,然后接收端开多个线程接收并各自负责写进特定文件位置,不过由于Socket匹配问题,因此还是使用单线程传输比较简单一点。六、方案实现及主要程序1.工程中的类(1).本软件屮分别有三个CAsyncSocket的派生类,分别是CCtrlSocket,CTalkSocket,CFileSocketa)CCtrlSocket:用于接收及发送控制信息,包括文件头为1'(登陆);2(冋馈);3(退岀);4(对话请求);’5,(对话请求的回应)的消息,对应

6、监听端口是CTRLPORT——3333b)CTalkSocket:用于接收及发送对话信息,及部分文件控制信息。包括文件头为8(退出对话);7(对话);8(请求传送);9(传送回应)的消息,对应监听端口是TALKPORT——3334c)CFileSocket:用于发送及接收文件,对应监听端口是FILEPORT——3335其它类如CPathDialog,CFileDlg与本设计的主要部分无紧要联系,故不一一说明了2.类的具体实现(1).CCtrlSocket类:主要部分有FD.READ及FD_CONNECT触

7、发的事件,OnConnect在建立连接后发送出相应的消息,而OnReceive在有消息到来的情况下处理消息voidCCtrlSocket::OnReceive(intnErrorCode){//TODO:Addyourspecializedcodehereand/orcallthebaseclasscharq[50];chart;unsignedintj;CStringtempaddr;CStringCtemp;UINTtempport;this・>Receive(q,strlen(q)+l,O);t=q

8、[°];forfl=0;jm_pMainWnd;pDlg->UpdateData(true);switch(t)//对控制信息的判断{caseT:〃登陆pDlg->mJistonline.InsertltemfO.q);this^GetP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。