TCP接收数据的问题,发送过来的都是结构体,应该如何接收
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP接收数据的问题,发送过来的都是结构体,应该如何接收相关的知识,希望对你有一定的参考价值。
sockClient = socket(AF_INET, SOCK_STREAM, 0);
if (sockClient == INVALID_SOCKET)
return;
addrClient.sin_addr.S_un.S_addr = inet_addr(pRecv->m_strIpAddr);
addrClient.sin_family = AF_INET;
addrClient.sin_port = htons(6000);
if (connect(sockClient, (SOCKADDR*)&addrClient,
sizeof(SOCKADDR)) == SOCKET_ERROR)
AfxMessageBox("应用线程与服务器连接失败!");
return;
msg.cmd = 3;
msg.time = m_time[i];
msg.devid = pRecv->m_iDevID;
if (send(sockClient, (char*)&msg, sizeof(mgd_msghdr), 0 ) == SOCKET_ERROR)
continue;
//Sleep(100);
iLen = recv(sockClient, buf, sizeof(buf), 0);
if (iLen < 0 )
continue;
pMsg = (mgd_msghdr*)buf;
bodyLen = (iLen - pMsg->hlen) / sizeof(mgd_axpdesc);
m_time[i] = pMsg->time;
DropTable(mysql, pRecv->m_iDevID);
CreateTable(mysql, pRecv->m_iDevID);
axp = (mgd_axpdesc*)(pMsg+1);
for (j = 0; j < bodyLen; j++)
InsertAxp(mysql, pRecv->m_iDevID, axp);
axp++;
从服务器发送过来的数据里面有一个头部,我主要是想把除头部之外的体部一个结构体一个结构体的存储到数据库中,应该怎么做啊
我建议一次就发送一个结构体的内容,可以循环发送,接收的时候循环接收并处理。不懂的话,直接找我 参考技术A 在网络字节序里面是以二进制发送的,你可以使用一个char类型的数组,在sender,你可以把你的结构体转换为字节序,在receiver,你可以精确地把每一个结构体读出来。然后重新封装成Struct.本回答被提问者采纳
以上是关于TCP接收数据的问题,发送过来的都是结构体,应该如何接收的主要内容,如果未能解决你的问题,请参考以下文章
java socket传送一个结构体给用C++编写的服务器解析的问题
用socket发送接收数据,但每次接收的数据字节长度都大于发送的25个字节?