OOPプログラミング:python3はソケットモジュールを使用してTCP通信マルチプロセスマルチクライアント接続をシミュレートします

インポートソケット
インポートスレッディング
インポートos
from時間インポートstrftime

class TcptimeServer:## TcpTimeServerという名前のクラスを定義します。クラスの基本属性
    def __init __(self、host = ''、port = 21567)を定義します
        self.addr =(host、port)
        self.serv = socket.socket()
        self.serv.setsockopt(socket.SOL_SOCKET、 socket.SO_REUSEADDR、1)
        self.serv.bind(self.addr)
        self.serv.listen(2)

    def tcp_work(self、cli_sock):##インスタンスを作成します。tcp_work、
        Trueのときにデータ送受信する操作を実行するために使用
            rdata = cli_sock.recv(1024)
            rdata = rdata.decode( 'utf8')
            if rdata.strip()== 'quit':
                break
            print(rdata.strip ())
            sdata = '[%s]%s'%(strftime( '%H:%S:%M')、rdata)
            cli_sock.send(sdata.encode( 'utf8'))
        cli_sock.close()

    def tcp_connect(self):##インスタンスを作成しますサーバーがクライアントの接続を待機するために使用されるtcp_connect。ここでは、メインプロセスがクライアント接続を閉じ、子プロセスが閉じていることを確認するために、フォークマルチプロセスモジュールが導入されています             。True
        :
cli_sock、cli_addr = self.serv.accept()はサーバー接続を閉じ、メインプロセスはゾンビプロセスを制御します。子プロセスは、workのworkインスタンスを呼び出す責任があります。最後に、フォーク爆弾を回避し、子プロセスの完了後に
            pid を閉じます= os.fork()
            if pid:
                cli_sock.close()
                while true:
                    result = os.waitpid(-1、1)[0]
                    if result == 0:
                        break
            その他:
                self.serv.close()
                self.tcp_work(cli_sock)
                exit()
        self.serv.close()

if __name__ == '
    __main__ ':## Call Class T = TcptimeServer()
    T.tcp_connect()##クラスのインスタンスを呼び出します。関数を完了します。

73件の元の記事を公開 賞賛4 20,000回以上の閲覧

おすすめ

転載: blog.csdn.net/qq_27592485/article/details/100768259