0
我看了一下http请求的文档,并写了最后这头:二进制数据
int *binary = new int[bufferLength]; // And fill it
std::stringstream out;
out << "POST /push1_pub?id=game HTTP/1.1\r\n";
out << "User-Agent: Lotosoft soccer client\r\n";
out << "Host: localhost\r\n";
out << "Accept: */*\r\n";
out << "Content-Type: application/octet-stream\r\n";
out << "Content-Length: " << bufferLength << "\r\n\r\n";
// Take out string from stream
std::string headers = out.str();
// Length of new array of bytes (headers + binary data + \0)
const int rawLen = headers.size() + bufferLength*sizeof(int) + 1;
char *raw = new char[rawLen];
// Copy headers data into bytes array
strcpy(raw, headers.c_str());
// Apply offset to bytes array and fill another part with binary array of ints
memcpy(raw+headers.size(), binary, bufferLength*sizeof(int));
std::cout << raw << std::endl;
// Send it to socket
if (socket.send(raw, rawLen) == -1)
{
std::cout << "Failed to send headers\n";
}
发布采购信息发送全成,但我不知道一切都很好,与我的想法,以填补万事成字节数组。这是正确的方式来传递二进制数据作为后请求身体?
为什么当您发送字节时,将length与sizeof(int)相乘?在大多数系统中,数据类型int的大小不是八位字节的大小。 – harper 2012-04-15 06:24:50