//学生输入密码错误
strcpy(sendBuf,"Password is Incorrect!");
}
}
else
{
//学号不存在
strcpy(sendBuf,"Account is not exist!");
}
}
uint8 slen = strlen(sendBuf);
//打包并发送学生登录确认信息
JOutStream jout;
jout << (uint8)UMR_LOGIN;
jout << slen;
jout.writebytes(sendBuf,slen);
char buf[1024] = {0};
jout.getbuf(buf);
sendto(p->GetSock(),buf,jout.length(),0,(sockaddr*)&pIoData->addr,sizeof(pIoData->addr));
return 0;
}
(4)学生端接收服务器返回的登录确认信息
LRESULT CLoginDlg::OnSockMsg(WPARAM wParam, LPARAM lParam)
{
char recvbuf[1024] = {0};
sockaddr_in peeraddr;
int len = sizeof(peeraddr);
WORD net_event = WSAGETSELECTEVENT(lParam);
if (WSAGETSELECTERROR(lParam))
{
return -1L;
}
else
{
if (net_event & FD_READ)
{
//接收服务器发送的数据包并进行解包
uint8 cmdSType;
uint8 slen = 0;
char rs[50] = {0};本文来自优.文~论^文·网原文请找腾讯324,9114
udpSocket.SockRecv(recvbuf,&peeraddr,len);
JInStream jin(recvbuf,1024);
jin >> cmdSType;
if (cmdSType == UMR_LOGIN)
{
//收到服务器返回的登录确认命令
jin >> slen;
jin.readbytes(rs,slen);
if (!strcmp(rs,"TRUE")) //学生成功登录
CDialog::OnOK();
else
MessageBox(rs); //学生登录失败,显示提示信息
}
}
}
return 0L;
}
4.2.3 屏幕广播模块
为了实现学生机能同步观看到教师机的屏幕,必须将教师机的屏幕位图通过搭建好的网络实时地传递到客户机,然后客户机再将收到的屏幕位图进行全屏显示。服务器的实现首先是通过GrabScreen()函数获取到屏幕位图信息,然后调用SaveBitmapToFile()函数将该屏幕位图信息转换为位图并保存到本机指定位置,
论文网http://www.youerw.com/ 最后在OnStratBroadcast()函数中读取所保存的位图发送到学生端并启动定时器OnTimer()实现屏幕位图实时传输。学生端则通过RevFile()接收服务器发送的位图,并且保存于缓存中,然后调用ShowPIC()函数将位图进行显,显示效果如图4-3所示。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>
C++的多媒体屏幕广播教学系统设计 第18页下载如图片无法显示或论文不完整,请联系qq752018766