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

相关推荐
Name_NaN_None4 分钟前
Linux 使用 Remmina 连接 Windows 远程桌面 ——「小白教程」
linux·网络·电脑·远程工作
桌面运维家7 分钟前
Prometheus服务器监控告警实战指南
运维·服务器·prometheus
cyforkk19 分钟前
前端架构实战:当服务器关闭时,如何优雅提示 502 错误?
服务器·前端·架构
2401_8657213326 分钟前
WEB 学习框架搭建
网络·学习·web
LlNingyu26 分钟前
文艺复兴, 什么是XSS,常见形式(三)
网络·安全·xss
123过去43 分钟前
reaver使用教程
linux·网络·测试工具·智能路由器
wanhengidc1 小时前
跨境云手机适用于哪些场景
大数据·运维·服务器·数据库·科技·智能手机
Honeyeagle1 小时前
无线移动在线复合式多合一气体检测仪:工业安全监测的革新利器
运维·网络·安全
桌面运维家1 小时前
网络运维:防火墙异常流量监控与安全配置优化
运维·网络·安全
xiaoxiaoxiaolll2 小时前
Nature Communications |石墨烯“解锁”亚太赫兹通信:3Gbit/s高速传输背后的器件创新
网络·人工智能