锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / VC++开发网络服务
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

VC++开发网络服务

一、启动服务器

利用CLassWizard为按纽IDC_SETSERVER添加响应函数OnSetserver。当用户单击按纽IDC_SETSERVER时,函数OnSetserver会被框架自动调用。在函数OnSetserver中进行启动服务器的操作。
在OnSetserver函数中,判断服务器是否已经开启。
若服务器未开启,则首先创建侦听套接字,建立侦听。其次,加载用户信息。再次,调整用户界面,显示与隐藏的相应控件。最后更新所有提示信息,并将服务器的开启标识m_lsServerOn设置为TRUE。
若服务器已开启,则调整用户界面显示与隐藏相应控件,并更新所有提示信息。

二、实现网络服务功能

建立侦听套接字

在CMyQQServerDlg类中,添加CListenSocket类型的私有成员变量m_listenSocket,变量m_listenSocket是整个聊天服务器系统唯一的侦听套接字。侦听套接字一经创建,可以指定端口侦听客户端的连接。
在CMyQQServerDlg类中,添加SetListenSocket成员函数。在函数SetListenSocket中,建立侦听套接字。
其实现代码如下:

服务代码1

接受客户端连接

在CMyQQServerDlg类中,添加成员函数OnAccept。当侦听套接字接受到客户连接请求时,此函数将会被调用。
在 OnAccept函数中,首先设置连接套接字的父窗口指针,接着调用连接套接字中的OnAccept函数接受客户端连接请求,并将用户接受客户端请求的连接套接字保存在m_listenSocket链表中。
其实现代码如下:
服务代码2

处理各种客户端请求


处理用户注册请求


当用户类型标识msg.m_msgtype值为0时,说明此条信息为用户注册请求,服务器此时执行用户注册请求的操作。
在处理用户注册请求的时候,首先将数据缓冲区msg.m_msgBuff中的信息强型转化成SUserInfo类型,将信息类型标识msg.m_msgtype修改为5,表示注册已经成功。其次调用函数GenerateID为该用户生成一个唯一的用户ID,将其赋值给info->m_infoID,并且         其实现代码如下: 
服务代码3
修改用户在线标识info->m_infoIsOnLine为1,表示用户已上线,将新注册的用户追加到用户的链表m_lstAllUser尾部。

处理用户登陆请求

登陆是非常复杂的过程,除了要判断用户的合法性外还要多个存储在服务器上的消息返回。其登陆过程如下图8:
服务代码4
图8:登陆过程
当在用户列表中找到与此用户ID相同的元素时,将msg.m_msgtype修改为9,表示缓冲区内容为用户信息,并将所查找到的用户信息拷贝到msg.m_msgBuff缓冲区中,将消息msg发送给客户端。
处理下载用户信息请求的实现代码如下:
服务代码5

处理用户下线请求

当信息类型标识msg.m_msgtype值为2时,说明此条信息为用户下线请求,服务器需要执行处理用户下线请求的操作。首先将数据缓冲区msg.m_msgBuff中的信息强制转化成SUserInfo类型。然后遍历用户列表,查找与此用户ID相同的元素。当找到与此ID相同的元素,就将用户的在线标识设为0,表示此用户已经离线。将msg.m_msgtype修改为2,表示用户成功离线。关闭对应的套接字,更新界面提示信息。

处理修改用户资料请求

当msg.m_msgtype值为5时,服务器需要执行处理修改资料请求的操作。首先将数据缓冲区msg.m_msgBuff 中的信息强型转化成SUserInfo类型。然后遍历用户列表,查找与此用户ID相同的元素。若在用户列表中找到与此用户ID相同的元素,则修改此用户的信息,存入用户链表中,并向客户端发送资料修改成功的消息。

处理保持连接请求

发送服务器系统消息

服务器系统的消息是服务器发送给所有客户端的广播信息,比如服务器将在某个时间重启,或是其它的提示信息。
首先利用CLassWizard为按纽IDC_SYSTEMMSG添加响应函数OnSystemmsg,其实现代码如下:

服务代码6

然后利用CLassWizard为按纽IDC_SENDMSG添加响应函数OnSendmsg。其实现代码如下:

发送代码

关闭服务器

利用CLassWizard为按纽IDC_STOPSERVER添加响应函数OnStopserver,如下图:
关闭代码
在OnStopserver函数中,将服务器开启标识设置为FALSE,将所有计数器清0。关闭侦听套接字,停止接受客户端连接。修改界面提示信息,调整相关控件的属性。准备客户端通知消息。遍历套接字链表m_lstSocket,向所有用户发送服务器关闭的消息。调用SaveToFile函数,将所有用户信息存入文件中,并清空用户链表。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内