无法使用Winsock WSABUF发送图像文件(image / jpg)

时间:2015-04-12 19:02:21

标签: c++ http buffer winsock

我被困了,我需要帮助。

我正在尝试编写正确的代码来发回图像文件,以便网络浏览器可以呈现它。它可以很好地发回text / html,但是image / *不起作用。

您可以看到代码,网址如下所示。

https://github.com/MagnusTiberius/iocphttpd/blob/master/iocphttpl/SocketCompletionPortServer.cpp

浏览器接收的只是几个字节的图像数据。

我尝试使用vector,std :: string和const char *来设置WSABUF的值,但仍会发送相同的几个字节。

请让我知道缺少这件作品的原因是什么。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这是你的问题:

PerIoData->LPBuffer = _strdup(str.c_str());

_strdup函数仅复制到第一个空值,因此不能用于复制二进制数据。如果您不想使用C ++库,请考虑使用mallocmemcpy

备用实现(在false分支中)也是不正确的,因为它将数据保存在I / O完成之前超出范围的对象(vc)中。你可以改为做

之类的事情
vector<char> * vc = new vector<char>;