我使用 UDT 库来发送我的数据。但似乎无法正确发送 unsigned char* 数据。一方面我发送它喜欢
int rc = UDT::sendmsg(socket, full_data, size, -1, true);
另一方面,我收到如下消息:
unsigned char* data;
int size = 2500;
data = new char[size];
while (true) {
int rc = UDT::recvmsg(sock, data, size);
if (rc == -1) std::cout << "Error: " << UDT::getlasterror().getErrorMessage() << std::endl;
else std::cout << "Received packet of length" << rc << std::endl;
}
双方发送/接收计数字节相同。但数据不一样。当我做某种
std::hash<unsigned char*> ptr_hash;
cout << "Hash: " << ptr_hash(data);
我有不同的哈希值。在 UDT 源中有以下行:
UDT_API int sendmsg(UDTSOCKET u, const char* buf, int len, int ttl = -1, bool inorder = false);
UDT_API int recvmsg(UDTSOCKET u, char* buf, int len);
如您所见,输入参数是 char* 但不是 unsigned char* 或 void*。这是否意味着我应该只发送 char* 或使用例如 base64 来编码我的二进制数据?