亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 中是否使用 http.client 或 Socket 包?

Python 中是否使用 http.client 或 Socket 包?

鴻蒙傳說 2021-10-26 18:47:16
我正在從事需要通過網絡將加密數據發送到服務器的項目。我已經在互聯網上搜索并檢查了幾個程序,但我之前對兩個包 http.client 和 Socket 感到困惑,我認為兩者都是一樣的。我的代碼中的幾行-import http.client..ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)conn = http.client.HTTPSConnection(host="wwww.my_server.com", port=443, context=ctx)headers = {'Content-type': 'application/json'}json_data = json.dumps(System_info)conn.request('POST', '/post', json_data, headers)上述方法無需證書即可工作,證書部分待定。我發現的另一種方法是使用 Sockets-import Socket..context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert)context.load_cert_chain(certfile=client_cert, keyfile=client_key)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)conn = context.wrap_socket(sock=s, server_side=False, do_handshake_on_connect=True, server_hostname=server_sni_hostname)conn.connect((host_addr, host_port))我能夠在我的系統上運行這些上面的代碼,我的系統既是客戶端又是服務器。但是我想知道我應該使用什么,因為我想將數據發送到必須加密和安全的 NMS 服務器。附加信息-Os - Ubuntu 16Python 3.5
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您需要使用什么取決于您實際但未知的需求:像 http.client 或requests這樣的庫實現了 HTTP 協議,包括純 HTTP 和 TLS(即 HTTPS)。這些模塊建立在套接字之上。

如果與您的特定服務器通信的應用程序協議是 HTTP/HTTPS,那么您可以使用更高級別的庫,如 http.client 和 requests,但理論上您也可以使用套接字。只是,使用普通套接字會使您實現起來更加復雜,并且與使用已建立的更高級別的庫相比,它很可能不那么健壯,并且需要更多的時間來實現。

如果您的服務器不支持 HTTP/HTTPS,您需要使用普通套接字自己實現服務器所需的特定(我們不知道)協議,或者您需要找到一些已經實現服務器所需協議的庫。在大多數情況下,后者是首選。


查看完整回答
反對 回復 2021-10-26
  • 1 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號