如何通过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()
。
专业提示:确保检查write()和recv()的返回值(并考虑将write()与read()或send()与recv()一起使用,因为这些是更常见的配对)。
相关文章:
- 通过方法访问结构
- 通过递归进行因子分解
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 尝试通过多个向量访问变量时,向量下标超出范围
- C++如何通过用户输入删除列表元素
- 通过多个头文件使用常量变量
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何通过派生类函数更改基类中的向量
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- Ctypes wstring通过引用传递
- 变量没有改变?通过向量的函数调用
- 如何通过cpp程序运行shell脚本
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- QT通过C++添加映射QML项目
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- C++03 12.4/12对通过指针显式调用基类析构函数有何说明
- *val 和 &val 在 C++ 中通过引用传递时有何不同