这是基于我之前问过的question。目前,我正在通过套接字从 Linux 机器向 Linux 发送一个零位的八位字节
const char null_data(0);
send(newsockfd,&null_data,1,0);
我的问题是发送到 Windows 机器(64 位)时会是一样的吗? 或者我必须更改代码吗?
最佳答案
这里的技巧是在可行的情况下使用 uint*_t
数据类型:
#include <cstdint>
/* ... */
#if !defined(__WIN64)
// *nix variant
typedef int socket_fd_t;
#else
// WinXX socket descriptor data type.
typedef SOCKET socket_fd_t;
#endif
void send_0_byte(socket_fd_t newsockfd)
{
uint8_t zero_byte(0);
send(newsockfd, &zero_byte, 1, 0);
}
您可能想要添加一些错误检查代码,包括正确的平台套接字 header 。 uint8_t
根据定义是一个 8 位数量(八位字节),它满足您的要求并避免潜在的 char
大小问题。
在接收端,您想要recv
到uint8_t
缓冲区。
关于c++ - 通过套接字从 Linux 向 Windows 机器发送空字节 - 会相同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623522/