91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

網絡通信第一課 C++封裝HTTP請求報文說明

發布時間:2020-06-10 15:12:43 來源:網絡 閱讀:1812 作者:fengyuzaitu 欄目:系統運維

一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成


使用C++組裝上述報文

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "POST /cs/restfull/operationRestfullApi/excuteSqlByCode HTTP/1.1\r\n";

request_stream << "Host: 192.168.0.88:8080\r\n";

//request_stream << "Connection: keep-alive\r\n";

request_stream << "Content-Length: " << strEncodeBuffer.size() << "\r\n";

request_stream << "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";

//request_stream << "User-Agent: Mozilla/4.0\r\n";

//request_stream << "Accept-Language: zh-CN\r\n";

request_stream << "\r\n";

request_stream << strEncodeBuffer;


請求行?

request_stream << "POST /cs/restfull/operationRestfullApi/excuteSqlByCode HTTP/1.1\r\n";



請求頭部

request_stream << "Host: 192.168.0.88:8080\r\n";

request_stream << "Connection: keep-alive\r\n";

request_stream << "Content-Length: " << strEncodeBuffer.size() << "\r\n";

request_stream << "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";

//request_stream << "User-Agent: Mozilla/4.0\r\n";

//request_stream << "Accept-Language: zh-CN\r\n";

空行

request_stream << "\r\n";

說明:最后一個請求頭之后是一個空行,發送回車符和換行符,通知服務器以下不再有請求頭


請求數據

request_stream << strEncodeBuffer;

說明:請求數據不在GET方法中使用,而是在POST方法中使用。

POST方法適用于需要客戶填寫表單的場合。與請求數據相關的最常使用的請求頭是Content-Type和Content-Length


注意

使用Boost庫asio組件的時候,建立的套接字,如果沒有設置TIME_WAIT的資源銷毀時間,會導致網絡套接字回收緩慢,建議使用代碼如下:

?io_service iosev;
?ip::tcp::socket socket(iosev);
?socket.open(boost::asio::ip::tcp::v4());

//TIME_WAIT回收資源時間

?boost::asio::socket_base::linger option(true, 0);
?socket.set_option(option);


注意

配置連接IP地址和端口的時候,需要注意如果傳遞的IP地址如下:"537MainStreet"會導致程序崩潰異常如果沒有使用ec捕獲異常

?ip::tcp::endpoint ep(ip::address_v4::from_string(strIP),? nPort);

正確代碼

?boost::system::error_code ec;
?ip::tcp::endpoint ep(ip::address_v4::from_string(strIP, ec), nPort);

采用asio庫的時候,需要更多的注意ec的使用,否則需要使用try catch捕獲異常,否則導致程序崩潰


參考

http://blog.csdn.net/zhangliang_571/article/details/23508953


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌兰浩特市| 三台县| 宁波市| 漳州市| 古蔺县| 吉首市| 新平| 四平市| 洛扎县| 定兴县| 平塘县| 孙吴县| 资讯| 徐闻县| 科尔| 石景山区| 垦利县| 龙川县| 荆门市| 乡城县| 日土县| 大城县| 玛曲县| 咸阳市| 南丹县| 定陶县| 温州市| 桑日县| 中牟县| 区。| 南昌县| 海兴县| 澄城县| 马鞍山市| 和硕县| 丹阳市| 梧州市| 宁蒗| 苍南县| 虞城县| 新营市|