繁体   English   中英

在C ++中用于TCP套接字的recv函数

[英]recv function for TCP socket in C++

我是套接字编程的新手。 我有一个用C ++编写的客户端应用程序,用于连接相机。 然后Camera以0-1460之间的块为单位发送帧数据包。我已经使用过recv函数来接收数据包。 我看到了太多问题,其中明确提到recv函数返回接收到的字节,但是在我的情况下,recv函数返回在recv函数的第3个参数(即len)中写入的值。 无论如何,我可以通过它们找到收到的实际字节。

我什至尝试使用char *,但是那甚至行不通。

所以,任何人都可以告诉我解决方案,任何帮助都将是可贵的。 预先感谢

char *buf = new char[1461];
int bytes = recv(sock, buf, 2000, 0);
printf("%d", bytes);

始终打印2000。因此,在buf中的有效字节之后,它们是未知字节,从而导致意外的Image。

首先,您的代码有一个错误(导致未定义的行为)。 您已分配1461字节,但您尝试读取的内容不止于此:

它应该像这样:

vector<char> buf(5000); // you are using C++ not C
int bytes = recv(sock, buf.data(), buf.size(), 0);
std::cout << bytes;

其次,结果符合预期。 相机发送的数据超过2000字节,因此,读取的字节数覆盖整个请求的大小并不感到奇怪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM