Python 如何卸下';b';打印邮件时的前缀?

Python 如何卸下';b';打印邮件时的前缀?,python,udp,Python,Udp,我刚刚开始用Python编程UDP服务器和客户端。我遵循了一个教程,并添加了一些我自己的知识来创建一个命令行聊天服务器。一切都按计划进行了,除了一件事:当我的客户机向服务器发送消息时,服务器会在实际消息前面打印一个“b”。我的委托人收到了他发回来的信息,前面是b。我尝试在客户端解码消息,但它从未发送。我曾尝试在服务器将要发回消息时解码该消息,但它从未发回客户端。我想要删除它的原因是因为它破坏了我想要的程序外观。谢谢你的帮助!下面是我的代码,先是服务器,然后是客户端。在我的代码之后,我粘贴了一些我

我刚刚开始用Python编程UDP服务器和客户端。我遵循了一个教程,并添加了一些我自己的知识来创建一个命令行聊天服务器。一切都按计划进行了,除了一件事:当我的客户机向服务器发送消息时,服务器会在实际消息前面打印一个“b”。我的委托人收到了他发回来的信息,前面是b。我尝试在客户端解码消息,但它从未发送。我曾尝试在服务器将要发回消息时解码该消息,但它从未发回客户端。我想要删除它的原因是因为它破坏了我想要的程序外观。谢谢你的帮助!下面是我的代码,先是服务器,然后是客户端。在我的代码之后,我粘贴了一些我得到的输出,这样你就可以确切地看到我在说什么

#Server   

from socket import *
import time

address = input("IP Address: ")
port = input("Port: ")

clients = []

serversock = socket(AF_INET, SOCK_DGRAM)
serversock.bind((address, int(port)))
serversock.setblocking(0)

quitting = False
print("Server is up and running so far.")

while not quitting:
    try:
        data, addr = serversock.recvfrom(1024)
        if "Quit" in str(data):
            quitting = True
        if addr not in clients:
            clients.append(addr)
        print(time.ctime(time.time()) + str(addr) + ": :" + str(data))
        for client in clients:
            serversock.sendto(data, client)
    except:
        pass
serversock.close()


服务器接收消息的方式:
Sun Oct 30 18:23:22 2016('192.168.1.66',61249)::b'jake>jake'

您正在发送/接收的数据是字节数组,因此您需要对它们进行解码以获得一个不带
b''的字符串。


您只需使用
print(data.decode())
即可获得正确的输出。如果未指定任何编码,默认行为是使用utf8(有关详细信息,请参阅)

打印时是否尝试对其进行解码?是的,但由于某种原因,打印时未打印。也许我在做这件事的时候犯了一个错误,我会再试一次。谢谢你的建议!可能的副本谢谢!我试着解码整件事,而不仅仅是数据,这就是出错的地方。
#Client

from socket import *
import threading
import time

tLock = threading.Lock()
shutdown = False

def receiving(name, sock):
    while not shutdown:
        try:
            tLock.acquire()
            while True:
                data, addr = sock.recvfrom(1024)
                print(str(data))
        except:
            pass
        finally:
            tLock.release()

address = input("IP Address: ")
port = 0

server = address, 6090

clientsock = socket(AF_INET, SOCK_DGRAM)
clientsock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
clientsock.bind((address, int(port)))
clientsock.setblocking(0)

rT = threading.Thread(target=receiving, args=("RecvThread", clientsock))
rT.start()

nick = input("How about we get you a nickname: ")
message = input(nick + "> ").encode()
while message != "q":
    if message != "":
        clientsock.sendto(nick.encode() + "> ".encode() + message, server)
    tLock.acquire()
    message = input(nick + "> ").encode()
    tLock.release()
    time.sleep(0.2)

shutdown = True
rT.join()
clientsock.close()