gpt4 book ai didi

c++ - UDT 无法发送无符号字符*

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:57 26 4
gpt4 key购买 nike

我使用 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 来编码我的二进制数据?

最佳答案

哦,棘手......你正在散列你的指针。

参见 http://en.cppreference.com/w/cpp/utility/hash (在注释下)

我建议打印您在两端发送的内容的十六进制值以确认它是相同的,而且应该是。如果您要发送以空字符结尾的字符串,您可能会丢失空字符。但这里可能不是这种情况,因为您指定它是无符号字符。

关于c++ - UDT 无法发送无符号字符*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com