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

相关推荐
tianshiyeben2 分钟前
日志审计系统WGLOG介绍 - 怎么采集防火墙的日志
运维·服务器·网络·日志审计
乾元2 分钟前
算力优化: 在有限硬件资源下进行安全模型微调(Fine-tuning)
网络·人工智能·神经网络·安全·web安全·机器学习·安全架构
高高山上立5 分钟前
HP Anyware License Server 26.01 Linux 管理员指南
运维·服务器·hp anyware
头疼的程序员5 分钟前
计算机网络:自顶向下方法(第七版)第三章 学习分享(三)
网络·学习·计算机网络
硅农深芯6 分钟前
蚀刻停止层:半导体制造中的主流绝缘防护屏障
网络·制造·芯片制造·蚀刻停止层
从入门到放弃-咖啡豆14 分钟前
Alibaba Cloud Linux 部署.NET 8 环境 项目运行
linux·服务器·.net·.net core
阿豪学编程15 分钟前
【网络】应用层-HTTP协议
网络·网络协议·http
南浦别a15 分钟前
第三十五天--小人物的坚持--网络编程
网络
ren0491840 分钟前
Linux基础
linux·运维·服务器
江畔何人初41 分钟前
Gateway API 的核心组件与作用
运维·网络·云原生·kubernetes·gateway