TypeError: a bytes-like object is required, not 'str'
在学习Python 网络编程中遇到的错误记录:
c.send('欢迎访问')
TypeError: a bytes-like object is required, not 'str'
类型错误:需要类似字节的对象,而不是字符串
产生问题原因:
我们发送的是字符串,这时我们需要将字符串进行bytes类型数据转换,
解决方法
-
方法一:
使用函数encode() c.send(str.encode(encoding=‘utf-8’)) → c.send(‘欢迎访问’.encode())
同时也要在接收数据是进行解码decode() s.recv(1024).decode(encoding=‘utf-8’) -
方法二:使用函数bytes c.send(types(str,‘utf-8’))
修改后的代码
#@Time : 2020/10/31上午 10:47
#@Author : Anthony.l
#@File :服务端.py
#@Software :PyCharm
import socket
s = socket.socket() #创建socket对象
host = socket.gethostname() #获取本地主机名
port = 12345 #设置端口
s.bind((host,port)) #绑定端口
s.listen(5) #等待客户端连接,监听端口
while True:
c,addr = s.accept() #建立客户端连接
print('欢迎连接',addr)
# c.send('欢迎访问!'.encode())
c.send(bytes('欢迎访问!','utf-8')) #修改处
c.close() #关闭连接
#@Time : 2020/10/31上午 10:51
#@Author : Anthony.l
#@File :客户端.py
#@Software :PyCharm
import socket
s = socket.socket() #创建socket 模块
host = socket.gethostname() #获取本地主机名
port = 12345
s.connect((host,port)) #打开TCP连接到服务商。
print(s.recv(1024).decode()) # 修改处
s.close()