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() 获取的字节数据解码为字符串

相关推荐
一个有温度的技术博主12 分钟前
网安实验系列七:域名收集
linux·运维·服务器
野犬寒鸦32 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
lifejump1 小时前
双冗余链路实现(2/2期)
网络
我要成为嵌入式大佬1 小时前
正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
linux·运维·服务器
欧云服务器1 小时前
宝塔计划任务怎么自动删除多少个以外的文件?
linux·运维·服务器
F1FJJ2 小时前
Shield CLI PostgreSQL 插件现已上架 VS Code 扩展市场
网络·vscode·网络协议·postgresql·开源软件
XXOOXRT2 小时前
零基础掌握Linux常用命令
linux·运维·服务器
123过去2 小时前
responder使用教程
linux·网络·测试工具·安全·哈希算法
不知名。。。。。。。。2 小时前
数据链路层
linux·网络
桌面运维家2 小时前
KVM虚拟机:快照增量备份与Linux系统快速恢复
linux·运维·服务器