Pythonは - IOモジュールが選択多重方式を選択します
IOマルチプレクサ - 選択選択モジュール実装方法のPythonの使用
同時に入力されたテキスト、およびテキストファイルを書き込むために、クライアントから送信されたテキスト端末を実現します:
WRITE_FILE /
├──client.py
├──server.py
├──のsettings.py
└──テキスト
#のsettings.pyの HOST = ' localhostの' PORT = 5556 BUFFERSIZE = 1024 ADDR = HOST、PORT
#Server.py インポートSYS から設定のインポート * からソケットインポート * から SELECT インポートSELECT S = ソケット() s.setsockopt(SOL_SOCKET、SO_REUSEADDR、 1 ) s.bind(ADDR) s.listen() RLIST = [S、SYS .stdin] #はIOイベントが処理待ちの必要 [] = wlist #は処理アクティブIOイベントを所望の XLIST = [] #IO処理するエラーイベントの後に F =オープン(' テキスト'、' W '、エンコーディングは= ' UTF-8 ' ) しながら、真: 印刷(' 接続を待って... ' ) してみてください: RSは、WS、XS = (RLIST、wlist、Xlistの)を選択する 以外KeyboardInterrupt: #按下はCtrl + C退出程序 印刷(' KeyboardInterrupt:Ctrlキー+ C終了する' ) 休憩 のための R におけるRS: 場合、Rはであり、S: CONN、ADDR = s.accept() #将客户端套接字加入监听列表 rlist.append(CONN) のelif rはさsys.stdinを: データ = r.readline() f.write(データ) f.flush() 他: データ = r.recv(BUFFERSIZE) なら ないデータ: rlist.remove(R) r.close() 他: データ = data.decode() f.write(データ) なら ないデータ[-1] == ' \ n ' 。 f.write(' \ nの' ) f.flush() f.close() S。CLOSE() 印刷(' エルフィン')
#1 client.py からソケットのインポート * から設定をインポート * S = ソケット() s.connect(ADDR) しばらく真: データ =入力(' >> ' ) の場合 ではないデータ: ブレーク s.send(data.encode()) S。CLOSE()
実装: