socket 通信一般数据怎么解析
1个回答
2016-04-09 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
就按照返回的数据结构解析即可。
接收数据代码:
while (TRUE)
{
//接收数据
ret = recv(pAccept->m_serverSocket, pAccept->m_pDYFrameInfoBuffer, sizeof(MSG_HEADER)+PACK_SIZE, 0);
if (ret == SOCKET_ERROR)
{
Sleep(40);
continue;
}
PMSG_HEADER pMsg = (PMSG_HEADER)pAccept->m_pDYFrameInfoBuffer;
unsigned int nMsgType = pMsg->nMsgType;
unsigned int nChannel = pMsg->nChannel;
unsigned int nDataSize = pMsg->nDataSize;
unsigned int nFrameNo = pMsg->nReserved;
CString strLog = _T("");
if ((tempFrameNo+1) != nFrameNo )
{
strLog.Format(_T("SocketReceiver接收帧序号:%d不连续-----通道号:%d"), nFrameNo, nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);
strLog.Format(_T("第%d帧返回值%d---通道号:%d"),nFrameNo,ret,nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);
}
/*strLog.Format(_T("SocketReceiver接收帧序号:%d-----通道号:%d"), nFrameNo, nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);*/
switch(nMsgType){
case DATA_MEDIA:
pAccept->AddBufferCache(nChannel,pAccept->m_pDYFrameInfoBuffer, nDataSize);
tempFrameNo = nFrameNo;
ZeroMemory(pAccept->m_pDYFrameInfoBuffer,sizeof(MSG_HEADER) + PACK_SIZE);
break;
}
}
接收数据代码:
while (TRUE)
{
//接收数据
ret = recv(pAccept->m_serverSocket, pAccept->m_pDYFrameInfoBuffer, sizeof(MSG_HEADER)+PACK_SIZE, 0);
if (ret == SOCKET_ERROR)
{
Sleep(40);
continue;
}
PMSG_HEADER pMsg = (PMSG_HEADER)pAccept->m_pDYFrameInfoBuffer;
unsigned int nMsgType = pMsg->nMsgType;
unsigned int nChannel = pMsg->nChannel;
unsigned int nDataSize = pMsg->nDataSize;
unsigned int nFrameNo = pMsg->nReserved;
CString strLog = _T("");
if ((tempFrameNo+1) != nFrameNo )
{
strLog.Format(_T("SocketReceiver接收帧序号:%d不连续-----通道号:%d"), nFrameNo, nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);
strLog.Format(_T("第%d帧返回值%d---通道号:%d"),nFrameNo,ret,nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);
}
/*strLog.Format(_T("SocketReceiver接收帧序号:%d-----通道号:%d"), nFrameNo, nChannel);
CCBLogOperator::DefaultInstance().AddLogEventToQueue(_LOG_EVENTNAME_SOCKET_SERVER, strLog, ECB_LOGEVENT_TYPE_INFO, _LOG_MODULENAME_SOCKET);*/
switch(nMsgType){
case DATA_MEDIA:
pAccept->AddBufferCache(nChannel,pAccept->m_pDYFrameInfoBuffer, nDataSize);
tempFrameNo = nFrameNo;
ZeroMemory(pAccept->m_pDYFrameInfoBuffer,sizeof(MSG_HEADER) + PACK_SIZE);
break;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
镭速传输
2024-10-28 广告
2024-10-28 广告
在深圳市云语科技有限公司,我们深知远程传输大文件的重要性与便捷性。为此,我们推荐使用高效的文件传输服务,这些服务通常支持断点续传,确保大文件传输的稳定与安全。用户只需简单上传,系统即可自动处理,无论文件大小,都能实现快速、可靠的远程传输。同...
点击进入详情页
本回答由镭速传输提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询