【发布时间】:2018-08-16 15:45:24
【问题描述】:
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()
当我运行此代码时,s.sendto (message, server) 行会导致 TypeError: a bytes-like object is required, not 'str'。
您如何解决此类问题?我尝试搜索互联网,但找不到解决方案。
【问题讨论】:
-
@scraaappy 这不是一个好的重复目标;所有答案都建议在字符串前面加上
b,但在这种情况下,字符串来自用户输入,所以前面是不可能的。无论如何,显式编码更好 - 如果字符串包含非 ascii 字符,前置b将不起作用。
标签: python python-3.x sockets