以下是试图通过使用套接字修改用户提供的输入的代码: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服务器端接收数据。
杨__羊羊
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'))
添加回答
举报
0/150
提交
取消