マルチソケット接続
この文書は、文書であるhttps://www.cnblogs.com/wodeboke-y/p/11241472.html
後続のコンテンツ。
文書上のケース2は、閉塞型ソケットサーバーを提供します
以下は、ノンブロッキング、次のキーポイントです。
解決するためにスレッドを使用して、障害物を受け入れます
ソケットをブロックし、解決setblocking使用
#コーディング= UTF-8
#!は/ usr / binに/のenv pythonの
'' '
'''
からソケットインポート *
からの時間インポート CTIMEの
輸入スレッド
インポート時間
HOST = ''
PORT = 2159
BUFSIZ = 1024
ADDR =(HOST、PORT)
tcpSerSock =ソケット(AF_INET、SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
靴下= [] #放每个客户端的ソケットは
デフ(ハンドル):
トゥルーながら:
用秒で靴下:
試してください:
データ= Sを。 RECV(BUFSIZ) #ここでは、プログラムの実行は、ダウン続け
除く例外AS:Eは
続行
されていない場合:データは
socks.remove(S)
続行
s.send('[%のS]、S%'%(CTIME()、データ))
T =スレッディングを.thread(=ターゲット・ハンドル) #の子スレッド
IF __name__ == '__main__' :
t.start()
プリント(U ' 私は%sのスレッド'。%threading.current_thread()名) #自体は、メインスレッドである
(プリント'接続を待っています...' )
しばらく真:
clientSock、ADDR = tcpSerSock.accept()
印刷('からの接続:'、ADDR)
clientSock.setblocking(0)
socks.append(clientSock)