Send()和recv()double或int

时间:2014-06-22 08:11:15

标签: c++ winsock

我遇到send和recv double / 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:

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

我不知道为什么它不起作用:/当我在客户端上输入/打印这个int时它是0或9,2555 ...... 请帮忙:/

1 个答案:

答案 0 :(得分:2)

您的sizeof(buffer)错了 - 您应该发送并接收sizeof(int)

另外,请注意,如果您的服务器和客户端在内存中以不同顺序存储整数,则无效。their Endianness可能不同。

要确保这不是问题,请从主机切换到网络顺序并返回。阅读htonlntohl