客户端报错:TypeError: must be str, not bytes
服务端报错:TypeError: a bytes-like object is required, not 'str'
报错源码:
''' Created on 2018年7月14日 @author: dtjy ''' import socket HOST='127.0.0.1' PORT=8080 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((HOST,PORT)) print('connect success') data = s.recv(1024) print('receive'+data) s.close()
''' Created on 2018年7月14日 @author: dtjy ''' import socket import datetime HOST='0.0.0.0' PORT=8080 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(1) while True: conn,addr=s.accept() print('Client %s connected!' %str(addr)) dt = datetime.datetime.now() message = 'Current time is'+str(dt) conn.send(message) print("send:"+message) conn.close
服务端代码
conn.send(message)
参数传入的是一个字符串。我使用的python版本是3.6,但是使用的教程版本是2.7,两个版本在宰割参数传入得类型有所不同
3.6的版本传入的是bytes字节,所以只需要将参数进行转化就行了:
conn.send(message.encode())
同时在客户端接收到的数据是bytes字节码,要先转换为字符串:
print('receive'+data.decode())
这样就行了