即时通讯系统的设计与实现毕业设计论文

char m_nUserName [20]; //用户名(20bytes) char m_nPassword[32]; //密码md5值(32bytes)

} DATA_LOGIN; (2)应答包定义

应答包的包头中,除了PacketLength包体长度和ReturnCode返回码以外,其他的都与请求包相同。在应答包中,m_nPacketLength = 4,ReturnCode则用来标识认证是否通过,具体返回码可以参见2.1中的内容。

包体中则是认证后返回给客户端的对应用户的ID码,如果认证失败,返回的ID码为0,程序将关闭其SOCKET其结构定义如下:

m_nPacketLength = 4; typedef struct data_back_login {

uint32 m_nStaffID; } DATA_BACK_LOGIN; 2)获取用户详细信息

客户端通过发送请求包,告知服务器要进行获取信息的操作以及需要获取何用户的信息,以ID号标识用户。此操作的MajorType为0x01,ServiceCode为0x02,OperationCode为0x28,包体长度为4,仅包含要请求的用户信息对应的ID。以下为该协议请求包和应答包结构定义的关键实现代码:

(1)请求包定义

其中,包头中关键属性设置为: m_nMajorType = 0x01; m_nServiceCode = 0x02; m_nOperation = 0x28; m_nPacketLength = 4; 包体的结构定义如下: typedef struct data_getInfo {

int32 m_nStaffID; } DATA_GETINFO; (2)应答包的定义

同其他应答请求包一样,包头中的m_nMajorType,m_nServiceCode,m_nOperation这三个标识操作类型的属性在请求包和应答包中是对应相等的。而

作为应答包,另一个重要的关键属性就是ReturnCode的值,以此来告知请求方服务端对其请求的响应结果。

此应答包包体包含内容为对应请求包包体中ID号的对应用户的全部详细信息。结构定义代码如下: Typedef struct staff_info {

Int32 m_nStaffID; Int8 m_nStaffNameLen;

Char m_nStaffName[MAX]; //员工姓名 Int8 m_nEmailLen;

Char m_nEmail[MAX]; //联系邮箱 Int8 m_nPhoneLen;

Char m_nPhone[MAX]; //手机号 Int8 m_nAddressLen;

Char m_nAddress[MAX]; //联系地址 Byte m_nSex; //性别(0男 1女) Byte m_nDateTime[8]; //加入时间(YYYYMMDD) Byte m_nBirthday[8]; //出生年月(YYYYMMDD)

Byte m_nUserState; //用户在线状态,0表示在线 1表示不在线 } STAFF_INFO

//员工ID

3.3 本章小结

本章主要介绍了本系统在TCP模式下具体的数据传输办法,详细设计出了系统C/S结构下Client端与Server端之间进行网络传输的通信协议。并在通信协议数据包中,以三个常见的典型功能作为示例论述了协议包的设计和实现方案。

4 网络数据传输控制模块

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@)