Send() and recv() double or int

Send() and recv() double or int

本文关键字:or int double and Send recv      更新时间:2023-10-16

我有问题发送和接收双/int从客户端到服务器和服务器到客户端。此时此刻,我有:

客户:

cin>>xp;
send( master,(char*)&xp,sizeof(xp),0);
服务器:

int valread, nr;
char * buffer;   
valread = recv(s,(char *)&nr,sizeof(buffer),0);

和它的工作,但当我从服务器发送到客户端我做了一些错误的。

我在服务器上有:

int lol;
lol=5;
send(s, (char*)&lol, sizeof(lol), 0);

我想要这个int on client:

bytesRecv = recv(master,(char*)&nr,sizeof(buffer),0);

我不知道为什么它不工作:/当我计算/打印这个int在客户端它是0或9,2555…请帮助:/

您的sizeof(buffer)是错误的-您应该发送和接收sizeof(int)

另外,如果您的服务器和客户端在内存中以不同的顺序存储整数,则此操作将不起作用-它们的Endianness可能不同。

要确保这不是问题,请从主机切换到网络顺序,然后再切换回来。阅读关于htonl和ntohl