为了账号安全,请及时绑定邮箱和手机立即绑定

TypeError:需要一个类似字节的对象,而不是'str'

TypeError:需要一个类似字节的对象,而不是'str'

泛舟湖上清波郎朗 2019-11-18 10:11:05
以下是试图通过使用套接字修改用户提供的输入的代码:from socket import *serverName = '127.0.0.1'serverPort = 12000clientSocket = socket(AF_INET, SOCK_DGRAM)message = input('Input lowercase sentence:')clientSocket.sendto(message,(serverName, serverPort))modifiedMessage, serverAddress = clientSocket.recvfrom(2048)print (modifiedMessage)clientSocket.close()当我执行它并提供输入时,会发生以下错误:Input lowercase sentence:fdsgfdfTraceback (most recent call last):  File "C:\srinath files\NETWORKS\UDPclient.py", line 6, in <module>    clientSocket.sendto(message,(serverName, serverPort))TypeError: a bytes-like object is required, not 'str'我该怎么解决?
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这段代码可能对Python 2有用。但是在Python 3中,这会引起问题,这与位编码有关。我试图制作一个简单的TCP服务器并遇到相同的问题。编码对我有用。尝试使用sendto命令。


clientSocket.sendto(message.encode(),(serverName, serverPort))

同样.decode(),如果要完全按照发送的方式打印数据,则可以在UDP服务器端接收数据。


查看完整回答
反对 回复 2019-11-18
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

一点编码即可解决此问题:


客户端:


message = input("->")

clientSocket.sendto(message.encode('utf-8'), (address, port))

服务器端:


data = s.recv(1024)

modifiedMessage, serverAddress = clientSocket.recvfrom(message.decode('utf-8'))


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 674 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信