简体   繁体   English

Send()和recv()为double或int

[英]Send() and recv() double or int

I have problem with send and recv double/int from client to server and server to client. 我在从客户端到服务器以及从服务器到客户端的发送和接收double / int时遇到问题。 For this moment, I have: 目前,我有:

client: 客户:

cin>>xp;
send( master,(char*)&xp,sizeof(xp),0);

server: 服务器:

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

and it's work, but when i send from server to client i do something wrong. 它的工作,但当我从服务器发送到客户端时,我做错了。

I have on server: 我在服务器上:

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

And I want this int on client: 我想要这个int客户端:

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

I don't knwo why it doesn't work :/ When I cout/printf this int on client it's 0 or 9,2555... Please help :/ 我不知道为什么它不起作用:/当我cout / printf在客户端上的这个int是0或9,2555 ...请帮助:/

Your sizeof(buffer) is wrong - you should send and receive a sizeof(int) . 您的sizeof(buffer)是错误的-您应该发送和接收一个sizeof(int)

Also, note this will not work if your server and client store integers in different order in memory - their Endianness may be different. 另外,请注意,如果服务器和客户端将整数以不同顺序存储在内存中,则它们将不起作用- 它们的字节序可能不同。

To make sure this is not a problem, switch from host to network order and back. 为确保这不是问题,请从主机顺序切换到网络顺序,然后再切换回网络顺序。 Read about htonl and ntohl 了解有关htonlntohl的信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM