[英]Negative Numbers over TCP socket C
每当我尝试通过TCP套接字发送负数时,当我打印收到的内容时,它将显示为“ 4.29497e + 09”。 我正在做的是这样的:
int i = -8;
int temp = htonl(i);
write(sock,&temp,4);
在服务器上:
int temp;
read(sock, &temp,4);
int read = ntohl(temp);
cout << read << endl;
如果有人可以提供帮助,将不胜感激。
htonl
/ ntohl
函数专门用于无符号的32位整数。
htonl()
函数将无符号整数hostlong
从主机字节顺序转换为网络字节顺序。
通过套接字传输数据时,无需将其转换为网络耐久度。 此功能用于转换地址,而不是实际数据。 这些函数使用无符号整数,因此它们与您的参数(有符号整数)不匹配
您需要忽略它们。
如果第二台计算机使用不同的字节序(这很罕见)(8086和ARM架构都使用低字节序),则在读取int和shorts时需要交换字节。 这通常在接收套接字上完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.