繁体   English   中英

TCP套接字C上的负数

[英]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.

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