Python网络编程报错TypeError: a bytes-like object is required, not 'str' 的解决办法
程序员文章站
2022-03-20 13:15:52
客户端报错:typeerror: must be str, not bytes
服务端报错:typeerror: a bytes-like object is required,...
客户端报错: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())
这样就行了
下一篇: unity游戏开发-按钮添加响应方式