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

相关推荐
SEO-狼术4 小时前
Support Network Diagnostics in .NET
运维·服务器·网络
AI周红伟4 小时前
AI自动盯盘与定时行情分析:OpenClaw股票辅助Agent集成完整使用指南-周红伟
运维·服务器·人工智能·音视频·火山引擎
魔都吴所谓4 小时前
【Python】从零构建:IP地理位置查询实战指南
开发语言·python·tcp/ip
不才小强5 小时前
Linux系统常用命令
linux·运维·网络
桌面运维家5 小时前
VHD/VHDX数据安全:块位图损坏与NTFS恢复
网络
SPC的存折6 小时前
8、Ansible之Playbook---Roles
linux·服务器·ansible
爱学习的小囧6 小时前
VCF 9.0+Harbor 搭建私有 AI 模型仓库(PAIS)超详细教程
服务器·人工智能·虚拟化·esxi8.0
春日见7 小时前
Tool文件夹:瑞士军刀库
运维·服务器·windows·深度学习·自动驾驶
arron88997 小时前
RK3588 Ubuntu 22.04 静态 IP 真实配置文件位置 + 最稳修改方法
tcp/ip·ubuntu·php
Gofarlic_OMS7 小时前
SolidEdge专业许可证管理工具选型关键评估标准
java·大数据·运维·服务器·人工智能