亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

網絡通信第一課 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

六盘水市| 博乐市| 阜康市| 寿宁县| 安福县| 平湖市| 额尔古纳市| 嫩江县| 麻栗坡县| 双流县| 河西区| 石屏县| 新巴尔虎左旗| 昔阳县| 中宁县| 北碚区| 闻喜县| 繁峙县| 双牌县| 咸阳市| 枣庄市| 定陶县| 临西县| 运城市| 北川| 张家川| 清水河县| 横峰县| 绥芬河市| 新营市| 蕉岭县| 周口市| 军事| 涪陵区| 吴江市| 海淀区| 吴旗县| 南召县| 二手房| 利津县| 南丹县|