人々の助けを借りて、より良いチャット クライアントを作成しました。
メッセージを待っているときに .recv でブロックされたくない場合は、スレッド、クラス、関数、およびキューを使用する必要があるとのことでした。
そこで、特定の人が私にくれたいくつかの助けに従って、クラスからスレッドを作成し、着信メッセージを読み取ってそれらを出力するはずの関数を定義しました。
また、送信する内容を入力できる機能も作成しました。
問題は、プログラムを実行するときです。何も起こりません。
誰かが間違っていることを指摘するのを助けることができますか? (3日間質問して調べても出てこなかったのでやってみました)
from socket import *
import threading
import json
import select
print("Client Version 3")
HOST = input("Connect to: ")
PORT = int(input("On port: "))
# Create Socket
s = socket(AF_INET,SOCK_STREAM)
s.connect((HOST,PORT))
print("Connected to: ",HOST,)
#-------------------Need 2 threads for handling incoming and outgoing messages--
# 1: Create out_buffer:
Buffer = []
rlist,wlist,xlist = select.select([s],Buffer,[])
class Incoming(threading.Thread):
# made a function a thread
def Incoming_messages():
while True:
for i in rlist:
data = i.recv(1024)
if data:
print(data.decode())
# Now for outgoing data.
def Outgoing():
while True:
user_input=("Your message: ")
if user_input is True:
Buffer += [user_input.encode()]
for i in wlist:
s.sendall(Buffer)
Buffer = []
ご覧いただきありがとうございます。これを提案してくれた Tony The Lion にも感謝します