python socket 如何接收tcp/ip byte 格式的數(shù)據(jù)?
問題描述
python socket 如何接收tcp/ip byte 格式的數(shù)據(jù)?下面的只能接收明文
import socketserver # 導(dǎo)入socketserver模塊class MyServer(socketserver.BaseRequestHandler): # 創(chuàng)建一個類,繼承自socketserver模塊下的BaseRequestHandler類 def handle(self): # 要想實現(xiàn)并發(fā)效果必須重寫父類中的handler方法,在此方法中實現(xiàn)服務(wù)端的邏輯代碼(不用再寫連接準(zhǔn)備,包括bind()、listen()、accept()方法)while 1: conn = self.request addr = self.client_address # 上面兩行代碼,等于 conn,addr = socket.accept(),只不過在socketserver模塊中已經(jīng)替我們包裝好了,還替我們包裝了包括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() # 通過調(diào)用對象的serve_forever()方法來激活服務(wù)端
問題解答
回答1:如果你的python3, conn.recv() 返回數(shù)據(jù)就是 bytes,decode一下就是str類型。或者使用bytes比較。
if accept_data == b'byebye': break
處理 accept_date數(shù)據(jù)的時候,decode即可,如果服務(wù)器返回的utf-8編碼的,只需要accep_data.decode(’utf-8’)
相關(guān)文章:
1. javascript - 在靜態(tài)頁面上用load 引入的頁面文件問題?2. javascript - webpack打包后的bundlejs文件代碼不知道什么意思.3. Android的webView如何實現(xiàn)網(wǎng)頁 錄音功能?4. node.js - Linux(CentOs)下hexo生成文章被killed5. android - RxJavar用什么操作符可以使數(shù)據(jù)每隔一段時間取出一個6. css - 關(guān)于ul的布局7. html - 哪些情況下float會失效?8. javascript - vue組件通過eventBus通信時,報錯a.$on is not a function9. java - oracle對漢字字段按照拼音排序的函數(shù)和sql語句是什么?10. css - 如何使用 vue transition 實現(xiàn) ios 按鈕一樣的平滑切換效果
