类型错误:需要一个类似字节的对象,而不是“str" [英] TypeError: a bytes-like object is required, not 'str'

查看:34
本文介绍了类型错误:需要一个类似字节的对象,而不是“str"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是尝试使用套接字修改用户提供的输入的代码:

The following is the code that tries to modify the input supplied by a user by using sockets:

from socket import *

serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Input lowercase sentence:')
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print (modifiedMessage)
clientSocket.close()

当我执行它并提供输入时发生以下错误:

When I execute it and supply input the following error occurs:

Input lowercase sentence:fdsgfdf
Traceback (most recent call last):
  File "C:srinath filesNETWORKSUDPclient.py", line 6, in <module>
    clientSocket.sendto(message,(serverName, serverPort))
TypeError: a bytes-like object is required, not 'str'

我该怎么做才能解决这个问题?

What can I do to solve this?

推荐答案

此代码适用于 Python 2.但在 Python 3 中,会导致位编码错误.我试图制作一个简单的 TCP 服务器并遇到了同样的问题.编码解决了这个问题.用 sendto 命令试试这个.

This code is good for Python 2. But in Python 3, results in bit encoding error. I was trying to make a simple TCP server and encountered the same problem. Encoding solves this. Try this with sendto command.

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

同样,如果您想完全按照发送的方式打印数据,您应该使用 .decode() 在 UDP 服务器端接收数据.

Similarly you should use .decode() to receive the data on the UDP server side, if you want to print it exactly as it was sent.

这篇关于类型错误:需要一个类似字节的对象,而不是“str"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆