P2Ptalker实验报告.docx
- 文档编号:9015900
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:5.39MB
P2Ptalker实验报告.docx
《P2Ptalker实验报告.docx》由会员分享,可在线阅读,更多相关《P2Ptalker实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
P2Ptalker实验报告
P2Ptalker实验报告
1.界面设计
2.数据结构
FileList代表文件资源列表
typedefstructFileList
{charfilename[20];
DWORDfilelength;
charusrname[10];
BYTEipFild[4];
intport;
}FileList;
MyMsg代表聊天用户收发信息的消息结构
typedefstructMyMsg
{
charmsg[100];
inti;
}Msg;
rgstdUsr用来保存服务器注册用户的信息
typedefstructrgstdUsr
{charusrname[10];
BYTEipFild[4];
intport;
BOOLonlStat;
}RgstdUsr,*pRgstdUsr;
3.消息类型
CStringRegisterAddr;注册消息
CStringOnlUsrInfo;在线更新消息
CStringPtoPsrvReqst;服务请求消息
CStringPtoPsrvRspse;服务响应消息
CStringMsgTalktoPeer;聊天信息消息
CStringSearchFile;搜索文件消息
CStringSearchRsp;搜索响应消息
CStringFileLoad;文件下载消息
CStringFileTransfer;文件传输消息
消息基本结构:
首部(消息类型);数据内容
CStringRegisterAddr;注册消息
注册消息结构:
RGST_ADDR;用户名,IP地址:
端口号&文件名1#文件长度1&文件名2#文件长度2&…
CStringOnlUsrInfo;在线更新消息
在线更新消息结构:
UPDT_USR;用户名1&用户名2&用户名3&……
CStringPtoPsrvReqst;服务请求消息
服务请求消息结构:
REQ_ADDR;用户名(对方),IP地址:
端口号(己方)
CStringPtoPsrvRspse;服务响应消息
服务响应消息结构:
RSP_ADDR;用户名,IP地址:
端口号(己方)
CStringMsgTalktoPeer;聊天信息消息
聊天信息消息结构:
SND_MSG;用户名(发送方),内容
CStringSearchFile;搜索文件消息
搜索文件消息结构:
SEA_FILE;搜索关键字,IP地址:
端口号(发送方)
StringSearchRsp;搜索响应消息
搜索响应消息结构:
SRS_FILE;文件名1,IP地址:
端口号&文件名2,IP地址:
端口号,文件名3…
CStringFileLoad;文件下载消息
文件下载消息结构:
LOD_FILE;文件名(选择),IP地址:
端口号(发送方)
CStringFileTransfer;文件传输消息
文件传输消息结构:
TRA_FILE;文件名,文件内容
4.消息处理函数
voidEnrolUsr(CStringstrMsgData);//登记注册用户
voidUpdUsr(CStringstrMsgData);//更新用户列表
voidPtoPsrvProvdr(CStringstrMsgData);//提供P2P地址服务
voidSendMsgtoPer(CStringstrMsgData);//向对方发送聊天信息
voidShowMsgfrmPer(CStringstrMsgData);//显示对方发来的聊天内容
voidStartSndSocket(CStringmsgtoSnd,CStringsIP,CStringsPort);//临时开启一个专用于发送消息的套接字
voidSearch(CStringstrMsgData);//处理资源搜索请求
voidSearchRspse(CStringstrMsgData);//处理搜索响应
voidLoad(CStringstrMsgData);//处理文件下载
voidFileRev(CStringstrMsgData);//处理文件传输
5.程序流程
1.用户加入和退出的过程
软件终端运行后,用户在配置完本地的IP地址和端口号后,单击“启动”按钮,触发OnOK()方法,开启本机进程。
选定其中一个用户的终端作为服务器,其他用户在各自的终端界面上填写网名昵称和服务器地址,并单击“设置共享目录“按钮,启动事件过程OnShare(),以便生成用户共享文件列表,单击“登录”按钮,终端自动生成注册类消息并调用StartSndSocket()方法将消息发往服务器。
用户终端把自己的IP地址、端口号、共享资源列表上传给服务器。
服务器收到注册消息后,调用EnrolUsr()方法更新服务器上保存的用户信息及文件列表并生成在线更新类消息广播发给所有在线的用户终端。
用户终端收到服务器的在线更新用户消息后,执行UpdUsr()方法刷新在线用户的列表显示。
如果用户要退出系统,可以单击”注销“按钮,终端会自动发送注销消息给服务器(不包括文件列表)。
服务器收到注销消息就会将该用户设为离线状态、更新文件列表,并执行UpdUsr()方法刷新在线用户的列表显示
如果用户要停止软件的运行,可以单击”停止“按钮,那么本机进程就会停止运行
2.收发信息的过程
当用户甲要与乙进行即时消息传送时,在终端的发送信息文本框内编辑文字信息,编辑完后从界面的在线用户列表中选中对方(乙方)的用户名,单击“发送”按钮,启动事件过程OnSend(),如果在甲保存的本地用户列表中有乙的信息,则甲可以直接向乙发送聊天内容(这个内容由信息收发类消息携带),否则甲向服务器发出请求P2P服务类消息。
服务器收到请求后,执行PtoPsrvProvdr()方法,并向用户返回P2P服务响应类消息。
用户甲的终端收到服务器返回的响应消息后,向对方(乙)的终端发出P2P通信(聊天)内容,这个内容由信息收发类消息携带,使用SendMsgtoPer()方法发送出去。
对方(乙)收到后通过ShowMsgfrmPer()方法将聊天信息的内容在终端界面上显示出来。
3.文件搜索及下载的过程
当用户想要搜索某一文件资源时,可以在搜索编辑框内输入搜索关键字,单击“搜索”按钮,启动事件过程OnSearch(),向服务器发送搜索文件消息SearchFile。
当服务器收到搜索文件消息时,执行Search()方法,在保存的文件资源列表中进行搜索,然后给用户返回搜索响应消息SearchRsp。
当用户收到服务器发来的搜索响应消息时,执行SearchRspse()方法,将搜索结果显示在界面的列表中。
当用户要从搜索结果中下载某一文件时,先要选中要下载的文件然后启动事件过程OnLoad(),向文件拥有者发送文件下载消息FileLoad。
文件拥有者收到文件下载消息后,执行Load()方法,向文件下载者传送文件,文件内容由文件传输消息FileTransfer携带。
文件下载者收到文件传输消息后,执行FileRev()方法,接收文件,并在信息框中显示“文件接收结束”的信息。
6.部分程序代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- P2Ptalker 实验 报告