簡體   English   中英

如何通過TCP套接字發送int16_t?

[英]How to send int16_t over TCP socket?

如何在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() htons()

專家提示:確保檢查write()和recv()的返回值(並考慮將write()與read()或send()與recv()一起使用,因為它們是更常見的配對)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM