python socket 如何接收tcp/ip byte 格式的數據?
問題描述
python socket 如何接收tcp/ip byte 格式的數據?下面的只能接收明文
import socketserver # 導入socketserver模塊class MyServer(socketserver.BaseRequestHandler): # 創建一個類,繼承自socketserver模塊下的BaseRequestHandler類 def handle(self): # 要想實現并發效果必須重寫父類中的handler方法,在此方法中實現服務端的邏輯代碼(不用再寫連接準備,包括bind()、listen()、accept()方法)while 1: conn = self.request addr = self.client_address # 上面兩行代碼,等于 conn,addr = socket.accept(),只不過在socketserver模塊中已經替我們包裝好了,還替我們包裝了包括bind()、listen()、accept()方法 while 1:accept_data = conn.recv(1024)#accept_data = int(’0x4’,16)print(accept_data)if accept_data == 'byebye': breaksend_data = bytes(input('>>>>>'))conn.sendall(send_data) conn.close()if __name__ == ’__main__’: sever = socketserver.ThreadingTCPServer(('192.168.0.110', 10001), MyServer) # 傳入 端口地址 和 我們新建的繼承自socketserver模塊下的BaseRequestHandler類 實例化對象 sever.serve_forever() # 通過調用對象的serve_forever()方法來激活服務端
問題解答
回答1:如果你的python3, conn.recv() 返回數據就是 bytes,decode一下就是str類型。或者使用bytes比較。
if accept_data == b'byebye': break
處理 accept_date數據的時候,decode即可,如果服務器返回的utf-8編碼的,只需要accep_data.decode(’utf-8’)
相關文章:
1. android - weex 項目createInstanceReferenceError: Vue is not defined2. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報錯,是什么情況?求大神指點3. pdo 寫入到數據庫的內容為中文的時候寫入亂碼4. PHPExcel表格導入數據庫怎么導入5. javascript - 如圖,百度首頁,查看源代碼為什么什么都沒有?6. vue2.0+webpack 如何使用bootstrap?7. PHP類封裝的插入數據,總是插入不成功,返回false;8. mac連接阿里云docker集群,已經卡了2天了,求問?9. python - 小白django提交數據后,沒有存儲到數據庫(查閱資料并沒有發現問題)10. javascript - 前端開發框架express,在他的模板引擎下怎么給按鈕添加綁定事件?
