//对接收的数据包进行解包
JInStream jin(pIoData->data.buf,pIoData->data.len);
jin >> cmdCType;本文来自优.文~论^文·网原文请找腾讯324,9114
COperation* oper = NULL;
oper = COperationFactory::createOperation(cmdCType); //根据解包得到的操作类型创建相应的操作类对象
论文网http://www.youerw.com/
int ret = oper->Excute(jin,pIoData,p);
//数据包处理完后,重新初始化再利用
memset(pIoData,0,sizeof(PER_IO_DATA));
pIoData->data.buf = pIoData->buf;
pIoData->data.len = DATA_SIZE;
pIoData->opType = RECV_POSTED;
int addrlen = sizeof(sockaddr_in);
memset(&pIoData->ol,0,sizeof(OVERLAPPED));
WSARecvFrom(p->udpSocket,&pIoData->data,1,&bytestransferred,&flag,(sockaddr*)&pIoData->addr,&addrlen,&pIoData->ol,NULL); //重新投递一个接收包请求
}
}
return 0;
}
4.2.2 登录模块
登录模块是为了验证学生身份,文护课堂秩序,整个模块的实现包含了学生端和教师端。学生端登录的实现首先要创建一个登录对话框如图4-2所示,接着为各个控件绑定好变量,然后为设置按钮和登录编写按钮响应函数OnBtnSetting()和OnBtnLogin()。OnBtnSetting()函数中实现了根据学生是否需要设置服务器地址有选择地扩展或收缩网络设置的对话框部分。OnBtnLogin()中先调用checkFill()函数验证学生输入的学号和密码格式是否正确,若不正确给出提示信息。验证通过后再将学生登录信息写入配置文件中并且打包发送给服务器。服务器学生信息验证及学生在线列表文护部分的实现是通过相应的Excute()函数来完成。在Excute()函数中先使用ADO连接Access数据库查询学生信息验证学生的登录信息是否正确,学生成功登录则将该学生的信息插入一个学生链容器[2]中,然后在服务器列表控件中添加显示一条在线学生信息,并且返回给客户端登录成功的提示,否则返回给客户端登录失败的提示。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>
C++的多媒体屏幕广播教学系统设计 第13页下载如图片无法显示或论文不完整,请联系qq752018766