私はちょうどUDPサーバーとクライアントをPythonでプログラミングし始めています。私はチュートリアルに続き、コマンドラインチャットサーバーを作成するための知識をいくつか追加しました。私のクライアントがサーバーにメッセージを送信すると、サーバーは実際のメッセージの前にb 'を付けて印刷します。私のクライアントは、彼のメッセージを前にb 'を持って彼に送り返します。クライアントでメッセージのデコードを試みましたが、送信しませんでした。私は、サーバーがそれを送り返すときにメッセージのデコードを試みましたが、決してクライアントに返信しません。これを取り除きたい私の理由は、私がプログラムのために望んでいた外観を崩壊させたからです。何か助けてくれてありがとう!以下は、まずサーバーとクライアントのコードです。私のコードの後には、私が得た出力の一部を貼り付けて、私が何を話しているかを正確に見ることができます。 日10月30日夜6時23分22秒2016( '192.168.1.66'、61249):::b'jake>ジェイクサーバーがメッセージを受信する方法メッセージの印刷時に '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()
#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()
印刷時にデコードしようとしましたか? – wwii
はい、私はしましたが、何らかの理由で印刷しませんでした。多分私はそれをやっている間に間違いを犯した、私は別のものを与えるだろう。あなたの提案のためのThabks! –