通过C 的插座发送图像
sending an image through a socket in C++
std::ifstream file(localPath.c_str(), std::ifstream::binary);
file.seekg(0, std::ifstream::beg);
while(file.tellg() != -1)
{
char *p = new char[1024];
bzero(p, 1024);
file.read(p, 1024);
printf("%ldn", file.gcount());
n = send(fd, p, strlen(p), 0);
if (n < 0) {
error("ERROR writing to socket");
} else {
printf("---------%dn", n);
}
delete p;
}
file.close();
实际上,我试图发送的图像是png(大小:27892 bytes),就读数而言,每个字节都在正确地读取。但是,在将它们写入插座的同时,只写了很少的字节。需要帮助。
预先感谢。:)
strlen()
期望NULL
终止字符串,而不是二进制图像数据,当您使用strlen()
时,它在第一个NULL
(或零)字节停止时,图像数据可能在第一个或秒内包含零字节或任何地方,因此您无法使用strlen()
查找图像缓冲区的大小。您应该使用缓冲区大小:
n = send(fd, p, 1024, 0);
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何通过插座传输 ESP32-Cam 拍摄的图像?
- 通过插座读取Python中的OpenCV图像
- 通过C 的插座发送图像