用socket发送结构体 却只收到其中一个数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用socket发送结构体 却只收到其中一个数据?相关的知识,希望对你有一定的参考价值。

结构体:
struct INFO

int flag;
int number;
int test;
;
客户端发送核心代码:
info.flag=11;
info.number=112;
info.test=113;
memcpy(SendBuffer,&info,sizeof(info));
Ret = send(CientSocket, SendBuffer, (int)strlen(SendBuffer), 0);
服务器接收端核心代码:
memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
Ret = recv(CientSocket, RecvBuffer, MAX_PATH, 0);
if ( Ret == 0 || Ret == SOCKET_ERROR )

cout<<"client out"<<endl;
break;

memcpy(&info,RecvBuffer,sizeof(info));
cout<<"info.flag:"<<info.flag<<" info.number:"<<info.number<<" info.test:"<<info.test<<endl;
结果:
flag=11,number=0,test=0
也就是无论结构体有多少int类型都只是能够正确收到第一个值,其他都是0.求解啊!

参考技术A 这个问题在于Ret = send(CientSocket, SendBuffer, (int)strlen(SendBuffer), 0);
改为:Ret = send(CientSocket, SendBuffer, sizeof(info), 0);本回答被提问者采纳
参考技术B send(CientSocket, SendBuffer, (int)strlen(SendBuffer)+1, 0);
Ret = recv(CientSocket, RecvBuffer, MAX_PATH, 0);
RecvBuffer[Ret]='\0';

以上是关于用socket发送结构体 却只收到其中一个数据?的主要内容,如果未能解决你的问题,请参考以下文章

C++ SOCKET发送结构体及接收

TCP socket 多线程 并发服务器(发送)与客户端(接收)

C++ socket传送和接收结构体问题,求大神帮忙

java socket传送一个结构体给用C++编写的服务器解析的问题

TCP接收数据的问题,发送过来的都是结构体,应该如何接收

C语言中如何将2个结构体拼成一个包