我已經提到過這個問題很多次,但是沒有一個解決方案似乎適用於我。我繼續發言之前,我將發佈的代碼一點點你:recv()延遲問題
// Await the response and stream it to the buffer, with a physical limit of 1024 ASCII characters
stringstream input;
char buffer[4096*2];
while (recv(sock, buffer, sizeof(buffer) - 1, MSG_WAITALL) > 0)
input << buffer;
input << '\0';
// Close the TCP connection
close(sock);
freehostent(hostInfo);
這裏是我的要求:
string data;
{
stringstream bodyStream;
bodyStream
<< "POST /api/translation/translate HTTP/1.1\n"
<< "Host: elfdict.com\n"
<< "Content-Type: application/x-www-form-urlencoded\n"
<< "Content-Length: " << (5 + m_word.length())
<< "\n\nterm=" << m_word;
data = bodyStream.str();
}
cout << "Sending HTTP request: " << endl << data << endl;
我是很新的這種編程(和堆棧overflow-寧願把它撞出來,把我的頭撞在牆上,直到我自己解決問題,但我迷失了在這裏!),並真的很感激幫助解決它爲什麼需要這麼長時間!我已經考慮設置它,以便它是非阻塞的,但有問題讓它按預期工作。雖然也許這裏的人可以指出我的方向是正確的,如果非博克路線是我需要走的路。
我已經看到很多人更喜歡使用庫,但我想學會這樣做!
我也是新手,在Mac上編程和使用套接字。也許不是最好的第一次項目,但我現在開始了!所以我希望繼續:)任何幫助都會很好!
預先感謝您!
你應該注意到有多少字節被讀入緩衝區,並且只寫入了很多輸入。不保證數據將包含或不包含空終止符。 – sje397 2012-07-31 11:29:00
根據您的要求判斷,您正在與網絡服務器進行通信。你的請求的問題是換行符。 HTTP標準說你應該使用'「\ r \ n」'作爲換行符,而不是單個''\ n''。 – 2012-07-31 11:33:09