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

相关推荐
EmbedLinX23 分钟前
嵌入式Linux之U-Boot
linux·服务器·笔记·学习
duration~40 分钟前
DHCP 协议详解
网络·网络协议·tcp/ip
fjh19972 小时前
使用caddy签发ip证书
运维·服务器
暴力求解2 小时前
Linux进程(六)命令行参数
linux·运维·服务器
野犬寒鸦3 小时前
深入解析HashMap核心机制(底层数据结构及扩容机制详解剖析)
java·服务器·开发语言·数据库·后端·面试
代码改善世界3 小时前
【C语言】线性表之顺序表、单链表、双向链表详解及实现
c语言·网络·链表
开开心心就好5 小时前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·安全·ddos·可信计算技术·1024程序员节
RisunJan6 小时前
Linux命令-lvreduce (收缩逻辑卷空间)
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志6 小时前
9.2.1 分析 Write File Record 功能(保姆级讲解)
java·开发语言·网络
天荒地老笑话么6 小时前
Bridged 与虚拟机扫描:合规边界与自测范围说明
网络·网络安全