String Python 3套接字字符串字节解码

String Python 3套接字字符串字节解码,string,sockets,python-3.x,byte,decoding,String,Sockets,Python 3.x,Byte,Decoding,大家好,我试着用Python3构建一个简单的客户机-服务器应用程序,这个应用程序可以正常工作,但我无法将文本格式化回“nomral”字符串。 我总是在打印文本前加上“b”前缀 客户端代码: import socket SERVER_PORT = 50007 BUFSIZE = 1024 def main(): host = input("Serveradresse: ") print() print("Narchicht: ") msg = input()

大家好,我试着用Python3构建一个简单的客户机-服务器应用程序,这个应用程序可以正常工作,但我无法将文本格式化回“nomral”字符串。 我总是在打印文本前加上“b”前缀

客户端代码:

import socket

SERVER_PORT = 50007
BUFSIZE = 1024

def main():
    host = input("Serveradresse: ")
    print()
    print("Narchicht: ")
    msg = input()
    msg = bytes(msg, 'UTF-8')
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    s.connect((host, SERVER_PORT))

    s.sendall(msg)
    print("Sendet")
    print()
    x = input("Press enter to continue!")
    s.close()


if __name__== '__main__':
    main()
服务器代码:

import socket

ECHO_PORT = 50007
BUFSIZE = 1024

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('', ECHO_PORT))
    s.listen(1)
    print("server Up") 
    conn, (remotehost, remoteport) = s.accept()

    print('Connected with' + remotehost)
    data = conn.recv(BUFSIZE)
    print("Echo: " + repr(data))
    while True:
        if data:
            data = conn.recv(BUFSIZE)
            value = repr(data)
            print("Echo: ", value)
    s.close()

if __name__== '__main__':
    main()
我是舒尔,解决方案很简单,但我不是阿贝尔


谢谢您的帮助。

大家好,我解决了这个问题,解决方案代码是:“.join(map(chr,data)),当您从python3中的套接字接收数据时,您会收到字节,而不是字符串。这就是为什么你得到了b前缀。您可以执行b“数据”。解码()或