如何通过TCP套接字发送int16_t

How to send int16_t over TCP socket?

本文关键字:int16 何通过 TCP 套接字      更新时间:2023-10-16

如何在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;
}

当您应该使用短版本ntohs()htons()时,您正在使用长版本ntohl()htonl()

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