TypeError: a bytes-like object is required, not ‘str‘

raceback (most recent call last):

File "D:\pycharmcode\client.py", line 12, in <module>

tcp_socket.send(send_data)

TypeError: a bytes-like object is required, not 'str'

使用socket进行ubuntu与windows通信时,发送数据时报了以上错误

解决办法是:

这个错误表示在使用 TCP socket 的 send() 方法发送数据时,传入的参数类型错误,需要 bytes-like 对象,而传入的是 str。在 Python 3 中,socket 模块的 send() 和 recv() 方法需要传入和返回 bytes 对象,不能直接处理字符串。解决方法是:1. 使用 str.encode() 方法对字符串进行编码:

复制代码
python
send_data = "hello server".encode("utf-8")
tcp_socket.send(send_data)
  1. 直接使用 bytes 字面量:
复制代码
python 
send_data = b"hello server"
tcp_socket.send(send_data)
  1. 如果服务端是 Python 2,可使用 str,添加编码声明:
复制代码
python
# -*- coding: utf-8 -*-

send_data = "hello server"
tcp_socket.send(send_data)

所以正确的做法是调用 encode() 或者直接使用 bytes 对象,将需要发送的数据统一转换为字节后再发出。同理,在接收数据时需要对 recv() 获取的字节数据解码为字符串

相关推荐
J***Q2927 分钟前
后端服务网格安全,mTLS加密通信
网络·安全
不吃鱼的羊30 分钟前
Autosar ECUM
linux·运维·服务器
llilian_1633 分钟前
晶振有什么好用的检测仪器?石英晶振测试仪 晶体测试仪
服务器·单片机·嵌入式硬件·其他
DARLING Zero two♡1 小时前
多人实时共用浏览器?Neko+cpolar 让异地协作像坐在一起办公
服务器
xcLeigh1 小时前
不用买服务器!用 Portainer+cpolar 搭个公网能访问的网站超简单
运维·服务器·cpolar·portainer
xc丶卡卡1 小时前
麒麟ARM64安装达梦数据库
linux·运维·服务器·arm·达梦
q***81642 小时前
如何安装配置Goland并使用固定公网地址SSH远程连接本地服务器
运维·服务器·ssh
裤裤兔3 小时前
linux提取指定前缀文件到其他文件夹
linux·运维·服务器·bash·终端
Altair12313 小时前
实验6 基于端口和域名的虚拟主机
linux·运维·服务器·云计算
wa的一声哭了3 小时前
WeBASE管理平台部署-WeBASE-Web
linux·前端·网络·arm开发·spring boot·架构·区块链