0

如何在 C++ TCP 套接字上安全地传输 int16_t?在下面的代码中,服务器似乎没有收到正确的值,我猜这是因为没有为 int16_t 定义 htonl/ntohl。

客户:

void client(int16_t value, int socket) {
    int16_t _value = htonl(value);
    write(socket, _value, sizeof(int16_t));
}

服务器:

int16_t server(int16_t buf, int16_t value, int socket) {
    recv(socket,&buf,sizeof(int16_t));
    value = ntohl(buf);
    return value;
}
4

1 回答 1

3

您正在使用长版本ntohl()以及htonl()何时应该使用短版本ntohs()htons().

专业提示:确保检查 write() 和 recv() 的返回值(并考虑将 write() 与 read() 或 send() 与 recv() 一起使用,因为这些是更常见的配对)。

于 2014-05-27T12:28:33.130 回答