python - typeError:需要一个类似字节的对象,而不是 Python 3 中的“str”
问题描述
我是 python 新手,我正在尝试一些东西。我正在尝试使用 python 套接字在 python3 中解决这个 UDP 客户端和服务器程序。
我的名为 UDpserver.py 的 UDP 服务器程序的目标如下:
- 接收来自客户端的消息
- 使用相同的消息响应客户端,但全部大写。
一个名为 UDpclient.py 的客户端程序连接到上述服务器并接收来自服务器的响应的目标:
- 向服务器发送消息
- 显示从服务器接收到的消息。显示的消息应为大写。
以下是服务器程序的代码(UDpserver.py):
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print (“The server is ready to receive”)
while 1:
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
以下是客户端程序代码(UDpclient.py)
import socket
serverName = ‘hostname’
serverPort = 12000
clientSocket = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
message = input(’Input lowercase sentence:’)
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
当我运行客户端程序(Udpclient.py)时,它让我输入小写字母后出现此错误:
TypeError:需要一个类似字节的对象,而不是第 7 行的“str”,即 clientSocket.sendto(message,(serverName, serverPort))
TypeError:需要一个类似字节的对象,而不是“str”
如果有人可以请帮我解决这个问题。谢谢你。
解决方案
您可以使用message.encode()
对字符串类型的消息进行编码。所以这就是你的UDPclient.py
样子:
import socket
serverName = ‘hostname’
serverPort = 12000
clientSocket = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
message = input(’Input lowercase sentence:’)
clientSocket.sendto(message.encode(),(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
推荐阅读
- python - 如何平滑 ROC 曲线?
- django - Django - 小部件上下文中的字段属性
- r - 如何对列表R的多个元素进行子集化
- c - 整数是 4 个字节,指针是 4 个字节,双精度是 8 个字节。以下代码的输出是什么?
- android - Flutter MethodCall 以 kotlin 方式进行非零检查
- c++ - x64 位上的 PEB_LDR_DATA
- python - 使用 read_excel(),skiprow 时出现空数据框错误
- pandas - 如何合并连续的 DatetimeIndex?
- r - 结合多列和多个几何图例
- php - PHP-SQL:如果在表中设置了值,则进行计数和排序