同時ネットワーク通信マルチプレクサ-io

「」「
ioが選択多路复用
[TCP]を選択し服务
『』」
*ソケットのインポートからを
選択し、インポートから*


S =ソケット()#が接続を監視、ソケットを作成
s.setsockopt(SOL_SOCKET、SO_REUSEADDR、TRUE)
s.bind(( '0.0.0.0'、9999))
s.listen(5)
RLIST = [S]

トゥルーながら:
トライ:
RSは、WS、XS =(RLISTを、[]、[])を選択
:除き、
引き続き
RSに私のために:
:私は== sの場合は
C、ADDR = i.accept()
rlist.append(C)
他:
データ= i.recv(1024).decode()
でない場合、データ:
rlist.remove(I)
i.close()
他:
プリント(データ)
i.send(b'thanks')

 


「」 "
IO)は(投票を実施し、多重化

「」」

選択インポート*から
ソケットのインポートから*


S =ソケット()#ソケットIOの作成
s.setsockopt(SOL_SOCKET、SO_REUSEADDR、真)
s.bind(( '0.0.0.0'、8888))
s.listenを(5)

印刷( '監視IO')


fdmap = {s.fileno():S}#キーオン保持ファイルIOを記述子


P =ポール()#は、ポーリングオブジェクトを作成します。


イベントIO p.register(S、POLLIN)#注意


真の中:
イベント= p.poll()#モニタイベントは、イベントの準備ができて、AリストへのIOリターンをioを、内部の要素はタプルが成る(イベントファイルの文字、タイプIO)されている
イベントのイベントでは、FD用:
== IF fdmap [FD] S:
C、fdmap ADDR = [FD] .accept()
p.register(C、POLLIN | POLLERR)
fdmap [c.fileno()] = C
のelif POLLIN&イベント:
データfdmap = [FD] .recv(1024) .decode()
IFれていないデータ:
p.unregister(FD)
デルfdmap [FD]
他:
印刷(データ)
fdmap [FD] .send(b'ok「)

 

おすすめ

転載: www.cnblogs.com/chenlulu1122/p/11888645.html