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()

链接

链接: https://www.runoob.com/python/python-socket.html.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值