import socket
def Main():
host = '127.0.0.1'
port = 5001
server = ('127.0.0.1',5000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
message = input("-> ")
while message != 'q':
s.sendto (message, server)
data, addr = s.recvfrom(1024)
print ('Received from server: ' + (data))
message = input("-> ")
s.close()
if __name__ == '__main__':
Main()
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,该行s.sendto (message, server)
会导致TypeError: a bytes-like object is required, not 'str'
.
你如何解决这种问题?我尝试在互联网上搜索,但找不到解决方案。
套接字读取和写入字节,而不是字符串(这是套接字的一般属性,而不是特定于 Python 的实现选择)。这就是错误的原因。
字符串具有encode()
将它们转换为字节对象的方法。因此,与其写入my_text
,不如写入my_text.encode()
您的套接字。
同样,当您读取套接字时,您会得到一个类似字节的对象,您可以调用该对象input_message.decode()
将其转换为字符串
归档时间: |
|
查看次数: |
2307 次 |
最近记录: |