我被困了,我需要帮助。
我正在尝试编写正确的代码来发回图像文件,以便网络浏览器可以呈现它。它可以很好地发回text / html,但是image / *不起作用。
您可以看到代码,网址如下所示。
https://github.com/MagnusTiberius/iocphttpd/blob/master/iocphttpl/SocketCompletionPortServer.cpp
浏览器接收的只是几个字节的图像数据。
我尝试使用vector,std :: string和const char *来设置WSABUF的值,但仍会发送相同的几个字节。
请让我知道缺少这件作品的原因是什么。
提前致谢。
答案 0 :(得分:1)
这是你的问题:
PerIoData->LPBuffer = _strdup(str.c_str());
_strdup
函数仅复制到第一个空值,因此不能用于复制二进制数据。如果您不想使用C ++库,请考虑使用malloc
和memcpy
。
备用实现(在false
分支中)也是不正确的,因为它将数据保存在I / O完成之前超出范围的对象(vc
)中。你可以改为做
vector<char> * vc = new vector<char>;