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

相关推荐
CNRio1 分钟前
第8章 网络安全应急响应
网络·安全·web安全
风掣长空23 分钟前
Google Test (gtest) 新手完全指南:从入门到精通
运维·服务器·网络
发光小北1 小时前
SG-PNh750-TCP-210(Profinet 从站转 Modbus TCP 网关)
网络·网络协议·tcp/ip
LEEE@FPGA1 小时前
ZYNQ MPSOC linux hello world
linux·运维·服务器
郝学胜-神的一滴1 小时前
Linux定时器编程:深入理解setitimer函数
linux·服务器·开发语言·c++·程序人生
无奈笑天下1 小时前
【银河麒麟高级服务器部署本地yum源】
linux·运维·服务器·经验分享
wanhengidc2 小时前
云手机 数字生活中新的可能
运维·服务器·科技·安全·智能手机·生活
轻颂呀2 小时前
TCP协议
linux·网络·网络协议·tcp/ip
未来之窗软件服务2 小时前
服务器运维(十八)国产化数据库服务漏洞安全——东方仙盟炼气期
运维·服务器·数据库·服务器运维
松涛和鸣2 小时前
25、数据结构:树与二叉树的概念、特性及递归实现
linux·开发语言·网络·数据结构·算法