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

相关推荐
编程牛马姐4 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
开压路机4 小时前
进程控制
linux·服务器
2401_873479405 小时前
如何从零搭建私有化IP查询平台?数据采集、清洗、建库到API发布全流程
服务器·网络·tcp/ip
FS_Marking6 小时前
CWDM vs DWDM:区别是什么?
网络
Vis-Lin7 小时前
BLE 协议栈:ATT 协议详解
网络·物联网·网络协议·iot·ble
代码中介商7 小时前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器
lcxc7 小时前
Mac M4超流畅运行Win版同花顺教程
网络
cccccc语言我来了7 小时前
C++轻量级消息队列服务器
java·服务器·c++
W.A委员会7 小时前
常见网络攻击
网络·http·网络安全
zmj3203247 小时前
CAN数据帧详解
网络·can·canfd·数据帧