一、預期結果
? ? ? ? 程序運行輸入所要查詢的地點,然后出現三個選項實時天氣、未來天氣、生活指數。
二、實現思路
? ? ? ? (一)Ubuntu中利用NOWapi服務器獲取訪問數據api地址,然后創建客戶端利用TCP、IPV4協議分別訪問實時天氣,未來天氣,生活指數api地址。F12可以獲取到信息,然后將api數據中appkey改用自己賬號的即可。如果賬號到期可以用字符串數組搞一個欺騙行為,偽裝為瀏覽器網址訪問然后獲取信息。
? ? ? ? (二)利用wireshark抓包工具獲取數據
三、核心代碼
這里我沒有用cjson函數,自己寫的函數實現了功能。
四、成果展示
五、總結
? ? ? ? 還是那句話,我是一個學者,遇到困難很正常。因為遇到有困難,解決困難才是正真的成長,才是正真的學會,才能從中學到真正的知識。
? ? ? ? 注意:
????????假如你設置了一個字符串數組,設置一個指針指向這個字符串數組,然后用strtok函數分割指針指向的字符串,這樣實際上字符串數組還是會被破壞。因為,我們需要將字符串數組strcpy到另一個數組,然后每次分割后將原字符串再一次復制到使用的數組中,這樣字符串數組就不會被破壞了。
六、通信方式
(一)connection:keep -alive//長連接(短時間多次通信)
? ? ? ? 1.特點:tcp通信先建立連接
? ? ? ? //connect_server
連接一次通信多次
? ? ? ? //request_http_today
? ? ? ? //recv_http_response
? ? ? ? //request_http_future
? ? ? ? //recv_http_response
? ? ? ? //close
(二)connectiion:close//短連接(偶爾通信一次)
? ? ? ?連接一次通信一次
????????//connect_server
? ? ? ? //request_http_today
? ? ? ? //recv_http_response
? ? ? ? //request_http_future
? ? ? ? //recv_http_response
? ? ? ? //close
(三)可能出現的問題
? ? ? ? 1.返回數據很大,但是應用層最多接1500????????//半包
? ? ? ? 2.處理方式
(四)段錯誤(預防措施)