基于winsock的局域网通信系统的开发(4)

2025-09-26

重庆理工大学课程设计

}

header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包

IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT32(uid);

send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列

void CP2PClientDlg::OnFindContact() { }

void CP2PClientDlg::OnPersonalSet() {

CContactInfoDlg dlg;//定义联系人信息对话框类对象 dlg.m_nOpenMode = 1;//对话框打开模式为修改信息

//将当前用户的详细信息传给联系人信息对话框中相应的成员变量 dlg.m_nUID = m_myself_info.user_id; dlg.m_strNick = CString(m_myself_info.nick);

CSetSearchTypeDlg set_type_dlg;//定义设置查找类型对话框类对象 if(set_type_dlg.DoModal() == IDOK)//弹出对话框,如果点击了\确定\按钮 { }

CQueryContactResultDlg result_dlg;//定义查找联系人结果对话框类对象 result_dlg.m_nUID = set_type_dlg.m_nUID;//传递查找类型信息 result_dlg.m_strNick = set_type_dlg.m_strNick;

result_dlg.m_nSearchType = set_type_dlg.m_nSearchType;

m_pChildWnd = &result_dlg;//记录当前子对话框,便于后面转发消息 result_dlg.DoModal();//显示查找联系人结果对话框

16

重庆理工大学课程设计

}

dlg.m_strName = CString(m_myself_info.name); dlg.m_strEmail = CString(m_myself_info.email); dlg.m_strTelephone = CString(m_myself_info.telephone); dlg.m_strProfession = CString(m_myself_info.profession); dlg.m_strCollege = CString(m_myself_info.college); dlg.m_strNote = CString(m_myself_info.note); dlg.m_nGender = m_myself_info.gengder; dlg.m_nAge = m_myself_info.age; dlg.m_nPic = m_myself_info.picture;

m_pChildWnd = &dlg;//记录弹出的子窗口句柄,方便转发消息 dlg.DoModal();//弹出对话框

void CP2PClientDlg::OnCancel() { }

void CP2PClientDlg::InitialInterface()//初始化界面 {

//初始化界面

m_ctrlFriendList.SetExtendedStyle (LVS_EX_FULLROWSELECT);//设置整行m_ctrlFriendList.InsertColumn(0,\用户帐号\m_ctrlFriendList.InsertColumn(1,\昵称\m_ctrlFriendList.InsertColumn(2,\状态\m_ctrlFriendList.InsertColumn(3,\新消息数\m_ctrlOnlineStatus.AddString(\上线\m_ctrlOnlineStatus.AddString(\隐身\

CDialoge D_dlg; //定义一个Dialoge类对象,用于防止意外关闭 if(D_dlg.DoModal()==IDOK) { }

Quit();

CDialog::OnCancel();

选中模式

17

重庆理工大学课程设计

}

m_ctrlOnlineStatus.AddString(\离开\m_ctrlOnlineStatus.SetCurSel(0);

void CP2PClientDlg::GetFriendList() { }

void CP2PClientDlg::GetMySelfInfo() {

//发送获取自己信息的消息包 IM_Header header;

header.cmd = IM_CONTACT_SEARCH; header.id = theApp.m_ClientInfo.uid;

header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包

IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT8(IM_SEARCH_ID); send_blk->write_UINT32(theApp.m_ClientInfo.uid); send_blk->write_UINT16(0);//只取一次

send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 //发送获取好友列表消息 IM_Header header;

header.cmd = IM_CONTACT_GET_LIST; header.id = theApp.m_ClientInfo.uid;

header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包

IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头

send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列

18

重庆理工大学课程设计

}

send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列

void CP2PClientDlg::GetFriendOnlineInfo() { }

void CP2PClientDlg::Quit()//退出程序 {

KillTimer(HEARTBEAT_TIMER); //取消心跳包定时器消息 //开始发送退出信息 IM_Header header;

header.cmd = IM_SESSION_LOGOUT; header.id = theApp.m_ClientInfo.uid; //发送获取好友在线信息消息

vector::iterator it_a = m_friend_list.begin(); for(; it_a!=m_friend_list.end(); it_a++) { }

usr_info_base* temp = (usr_info_base*)*it_a; //开始发送改变在线状态信息 IM_Header header;

header.cmd = IM_GET_ONLINE_INFO; header.id = theApp.m_ClientInfo.uid;

header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包

IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT32(temp->user_id);

send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列

19

重庆理工大学课程设计

}

header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包

IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头

send_blk->write_buffer(theApp.m_ClientInfo.password,MAX_PASSWORD_LEsend_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列 //将最近登录帐号重新写入配置文件 char szTemp[MAX_STRING_LEN] = \

g_fileobj.update_string(\//删除和所有好友的聊天记录

int nRows = m_ctrlFriendList.GetItemCount(); for(int i=0; i

vector* data =

vector::iterator it = data->begin(); for(; it!=data->end(); it++) { }

delete data;//删除记录在ListCtrl上的指针

CString* msg = (CString*)*it; delete msg;//删除单条聊天记录

N+1);

d,szTemp,10));

(vector*)m_ctrlFriendList.GetItemData(i);

void CP2PClientDlg::OnClose() {

CDialoge D_dlg;

//定义一个Dialoge类对象,用于防止意外关闭

20


基于winsock的局域网通信系统的开发(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:铁路客运专线结构物沉降观测方案

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219