How does python socket receive data in tcp/ip byte format? The following can only receive plain text
import socketserver # 導(dǎo)入socketserver模塊
class MyServer(socketserver.BaseRequestHandler): # 創(chuàng)建一個(gè)類,繼承自socketserver模塊下的BaseRequestHandler類
def handle(self): # 要想實(shí)現(xiàn)并發(fā)效果必須重寫父類中的handler方法,在此方法中實(shí)現(xiàn)服務(wù)端的邏輯代碼(不用再寫連接準(zhǔn)備,包括bind()、listen()、accept()方法)
while 1:
conn = self.request
addr = self.client_address
# 上面兩行代碼,等于 conn,addr = socket.accept(),只不過(guò)在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":
break
send_data = bytes(input(">>>>>"))
conn.sendall(send_data)
conn.close()
if __name__ == '__main__':
sever = socketserver.ThreadingTCPServer(("192.168.0.110", 10001),
MyServer) # 傳入 端口地址 和 我們新建的繼承自socketserver模塊下的BaseRequestHandler類 實(shí)例化對(duì)象
sever.serve_forever() # 通過(guò)調(diào)用對(duì)象的serve_forever()方法來(lái)激活服務(wù)端
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
If your python3
, conn.recv()
返回?cái)?shù)據(jù)就是 bytes
,decode一下就是str
類型?;蛘呤褂?code>bytes compare.
if accept_data == b"byebye":
break
Processing accept_date
數(shù)據(jù)的時(shí)候,decode即可,如果服務(wù)器返回的utf-8
編碼的,只需要accep_data.decode('utf-8')