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

相关推荐
专业开发者几秒前
安全防护蓝牙 ® 网状网络代理应用
网络·物联网·安全
木童6628 分钟前
Docker 容器化 Web 服务全流程实践(含网络深度场景)
前端·网络·docker
Ronin3058 分钟前
【Linux网络】多路转接poll
linux·网络·io·多路转接·poll
ICT技术最前线12 分钟前
H3C策略路由如何优化企业网络?
网络
allk5512 分钟前
Android 性能优化深水区:电量与网络架构演进
android·网络·性能优化
Kendra9191 小时前
计算机网络--- TCP/IP协议簇
网络协议·tcp/ip·计算机网络
wanhengidc2 小时前
物理服务器与云服务器的不同之处
运维·服务器·网络·游戏
Lucky小小吴2 小时前
ClamAV扫描速度提升6.5倍:服务器杀毒配置优化实战指南
java·服务器·网络·clamav
kaoa0002 小时前
Linux入门攻坚——58、varnish入门
linux·运维·服务器
安当加密2 小时前
通过ASP认证系统作为 RADIUS 认证服务器:解决异地办公登录安全问题的实践方案*
运维·服务器·安全