WEB开发网
开发学院软件开发VC 基于TCP的局域网多用户通信、文件传送程序详解 阅读

基于TCP的局域网多用户通信、文件传送程序详解

 2010-06-27 20:41:57 来源:WEB开发网   
核心提示:五、网络传输协议设计为了让客户端和服务器能够协同工作,必须在通信过程中定义一套规则也就是协议,基于TCP的局域网多用户通信、文件传送程序详解(3),让双方能够相互听懂,并依照协议执行相应的功能块,志存高远,脚踏实地,客户端注册时发送的消息为Reg: + BasicDlg.m_strUserName + BasicDlg

五、网络传输协议设计

为了让客户端和服务器能够协同工作,必须在通信过程中定义一套规则也就是协议,让双方能够相互听懂,并依照协议执行相应的功能块。

客户端注册时发送的消息为Reg: + BasicDlg.m_strUserName + BasicDlg.m_nAge + sex + BasicDlg.m_strPassWd + MiscDlg.m_strTruName + MiscDlg.m_strCity + MiscDlg.m_strEmail + res + MiscDlg.m_strTel,注册时发送消息的头部为Reg。登录时发送的消息为:Load: + m_strUserName + m_strPassWd,登录时发送消息的头部为Load。注册登录服务器收到客房端的消息后检查其头部,若是Reg则执行注册操作,注册成功则返回success!,用户名已经存在则返回exist!,其它原因注册不成功则返回Error!;若是Load则执行登录操作,登录成功返回success!,登录不成功则返回error!。客户端依照返回信息做出相应提示,并执行相应功能模块。

登录成功后,客户端将自己的用户名发送给聊天通信服务器,服务器为客户端创建一个套接字,两个线程,并填充socketInfo结构,连入链表。客户端发送消息结构为:“接收者用户名” + “:” + “发送者头像ID” + “~” + “(星期、月、日、年、时、分、秒)” +"\t" +"发送者用户名" +“->” + “接收者用户名” +"\n\r" + “发送的消息”,其头部均为接收者用户名,服务器依照用户名查找链表,截掉头部后把原信息进行转发,若客户端关闭, 则发送消息为Close!,服务器从链表中删除相应项。

客户端可能收到的消息有三种,第一种为普通消息,结构如前所述;第二种为SendFile!,表示对方想向己方传送文件;第三种为Refuse!,表示对方拒绝接收己方文件。客户端A想给客户端B传送文件,则发送消息为SendFile!,B收到SendFile!后弹出消息框,提示对方向己方传送文件,接收按“是”,执行文件接收功能;拒绝按“否”,发送Refuse!

六、附加说明

本软件在win2000professionSP4 + vc6MFC环境下开发和测试通过,使用前要注册ODBC数据源;数据源名称:wbQQuser;类型:ACCESS;文件名:wbQQuser.mdb,不明了之处请参看源程序,注释很清楚。

多线程通信使用的全局变量导致函数耦合度较大。

有些函数太长,导致功能不单一,内聚度降低。

客户端点击传送文件后,应使该按钮无效,直到文件传送完毕或文件传送线程关闭再使之有效,如不使用全局变量有什么好办法实现。

我认为学好一种技术爱好是最好的老师,交流是最好的方法,请高手赐教。

QQ:2105629

Email:lwb75@sina.com。

志存高远,脚踏实地,生命不息,奋斗不止!

本文配套源码

上一页  1 2 3 

Tags:基于 TCP 局域网

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接