先介绍一下 python bytes和str两种类型转换的函数
encode(),decode()
- str通过encode()方法可以编码为指定的bytes
- 反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
Error: a bytes-like object is required, not 'str'
from socket import * from time import ctime HOST='' PORT=21546 BUFSIZ=1024 ADDR=(HOST,PORT) udpSerSock = socket(AF_INET,SOCK_DGRAM) udpSerSock.bind(ADDR) while True: print('waiting for message...') data,addr=udpSerSock.recvfrom(BUFSIZ) data=data.decode() print('Get client msg is:', data) udpSerSock.sendto(('[%s] %s'%(ctime(),data)).encode(),addr) print('...received from and returned to:',addr) udpSerSock.close()
#coding=utf-8 from socket import * HOST = 'localhost' # or 'localhost' PORT = 21546 BUFSIZ = 1024 ADDR=(HOST,PORT) udp_client = socket(AF_INET,SOCK_DGRAM) udp_client.connect(ADDR) while True: data = input('> ') #print('data=',data); if not data: break udp_client.sendto(data.encode(),ADDR) data ,addr= udp_client.recvfrom(BUFSIZ) data=data.decode() if not data: break print(data) udp_client.close()