我是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',即 发送到(消息,(服务器名,服务器端口))
TypeError: a bytes-like object is required, not 'str'
如果有人能帮我解决这个问题。多谢各位
在将“主机名”更改为实际IP并使用更新错误代码后解决了此问题
Python 3字符串完全支持unicode规范。内存中的字符串在通过网络发送之前,必须以某种方式序列化,以符合某种编码,如ASCII、UTF-8、各种Windows代码页等
sendto
需要已编码的字节字符串因为您在机器之间传输数据,所以让每台机器选择自己的编码不是一个好主意。对于自主开发的协议,最简单的选择就是声明将使用UTF-8,这是最具互操作性的unicode编码
接收器将使用相同的编码进行解码
您可以使用
message.encode()
对字符串类型的消息进行编码。这就是你的UDPclient.py
的样子:相关问题 更多 >
编程相关推荐