期望
是实现客户端与服务端实现图片传输并显示
目前实现
**注:**测试图片宽为 481, 高为 640
服务端
char buf[481*640*3]; while(1) { memset(buf, 0, sizeof(buf)); int total = 0; while(total < 481*640*3) { long len = recv(connfd, buf, 481*640*3, 0); total = total + len; } cout << "接收长度为: " << total << endl; break; } Mat img(640, 481, CV_8UC3, buf); imshow("sss", img); waitKey(0); 客户端
Mat img = imread("/img/1.jpg"); int imgSize = img.cols*img.rows*img.channels(); cout << imgSize << endl; char pos[imgSize]; memcpy(pos, img.data, sizeof(pos)); long sizelen = send(sockfd, pos, imgSize, 0); 问题
我理解的是 recv 函数返回的是 copy 完成的字节,send 发送数据过大时需要多次 recv.
因此我在 recv 加了个循环保证接收到的字节数等于发送的字节数.但是当我把接收到的数据 Imshow 时出现了图片错误的情况,大概是图片只展示了一部分并且出现了图片复制这种情况.
因为接触 C++不久,网上也查不到相关资料,因此写贴咨询一下,还请各位大佬不吝赐教,谢谢.
