Pythonは - IOモジュールが選択多重方式を選択します

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()

 

実装:

おすすめ

転載: www.cnblogs.com/noonjuan/p/11281587.html