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

相关推荐
翻斗花园岭第一爆破手1 分钟前
flutter2:Container的简介与尺寸
java·服务器·前端
TG:@yunlaoda360 云老大3 分钟前
华为云国际站代理商GES的应用场景有哪些?
服务器·数据库·华为云
脏脏a4 分钟前
【Linux】进程地址空间
linux·运维·服务器·进程地址空间
无泪无花月隐星沉4 分钟前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
走向IT7 分钟前
Python批量修改linux 密码脚本
linux·运维·服务器·python·批量·修改密码
lifewange10 分钟前
Linux 系统性能监控核心命令(全覆盖 CPU、内存、磁盘、网络、负载)
linux·网络·php
咕噜签名-铁蛋10 分钟前
自建云服务器的潜在风险与安全挑战分析
服务器
nono牛15 分钟前
实战项目:设计一个智能温控服务
android·前端·网络·算法
Full Stack Developme4 小时前
Linux 多种压缩格式,优缺点和适用场景
linux·运维·服务器
云老大TG:@yunlaoda3608 小时前
华为云国际站代理商TaurusDB的成本优化体现在哪些方面?
大数据·网络·数据库·华为云