0
次のように私の現在のコードは次のとおりです。Pythonのソケット - スレッドを閉じると、できるようにし、より多くのユーザー
from socket import *
import threading
import datetime
import csv
import time
global clist
clist = []
HOST = "ip"
PORT = 1876
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
def clientHandler():
print("Thread successful\n")
connect, address = s.accept()
clist.append(connect)
iplist = open("iplist.txt","a+")
iplist.write(str(address)+"\n")
iplist.close()
print('IP Recorded.')
while 1:
try:
data = connect.recv(1024)
data = data.decode()
current_date = time.strftime("%d-%m")
log = open(current_date+"log.txt","a+")
print("("+time.strftime("%H:%M:%S")+")","> ", data)
log.write("> "+data+"\n")
log.close()
data = data.encode()
for item in clist:
item.sendall(data)
except: #handles clients leaving and fixes reconnect bug, succesfully removing them from clist
clist.remove(connect)
print(address, 'has disconnected.')
break
print("Server started...")
for i in range(5):
makeThread = threading.Thread(target=clientHandler)
makeThread.start()
aliveList = threading.enumerate()
print(aliveList)
私の問題は、クライアントが(X5)に参加または再参加後、サーバーがこれ以上の接続を許可しないことである(なぜなら私のclientHandler関数のスレッドが使用されています)。私はスレッドを閉じなければならないでしょうか、また、より多くのクライアントが参加/再結合できるように再利用可能にする方法はありますか? (どのように私はこれを行うだろうか?) また、私は非常にこのすべてに新しいので、誰も私のコードの改善/ソケットプログラミングと正しい道で私をガイドすることをお勧めできます。
喜んで助けてください、
歓声。
こんにちはt.m.adam遅い返事を申し訳ありませんが、私はあなたが言ったことを試みましたが、それはまだ5つのクライアントが接続することができますし、それらが切断されても、これ以上のヘルプは、ゴールデンであり、ありがとう – montymagic9
私はコードを更新しました、今は大丈夫です。 –
再度 'KeyboardInterrupt'をキャッチするように更新されました(ループを中断したい場合)。 'makeThread.daemon'の問題を修正しました。 –