zoukankan      html  css  js  c++  java
  • Python 简单的多线程聊天

    # client 端
    import socket
    
    ip_port = ('127.0.0.1', 8091)
    sk = socket.socket()
    sk.connect(ip_port)
    print("客户端启动: ")
    
    while True:
        inp = input(">>>")
        sk.sendall(bytes(inp, "utf8"))
        if inp == 'exit':
            break
        server_response = sk.recv(1024)
        print(str(server_response, "utf8"))
    sk.close()
    
    
    # server 端
    import socketserver
    
    class MyServer(socketserver.BaseRequestHandler):
    
        def handle(self):
            print("服务器启动...")
            while True:
                conn = self.request
                print(self.client_address)
                while True:
                    client_data = conn.recv(1024)
                    print(str(client_data, "utf8"))
                    print("waiting...")
                    server_response = input(">>>")
                    conn.sendall(bytes(server_response, "utf8"))
                conn.close()
    
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',8091), MyServer)
        server.serve_forever()   # 这里会执行 handle 方法,所以 handle 方法里是编写程序逻辑。
    
    

    创建一个socketserver 至少分以下几步

    First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.
      
    Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class.

    Then call the handle_request() or serve_forever() method of the server object to process one or many requests.

    Finally, call server_close() to close the socket.

  • 相关阅读:
    例题
    经典模型
    定义
    洛谷p2564生日礼物andp2627修建草坪
    转自大佬的线段树
    c++String类
    随机数
    JVM知识点总结
    task5 模型融合 打卡
    task4 建模与调参 打卡
  • 原文地址:https://www.cnblogs.com/klvchen/p/9286625.html
Copyright © 2011-2022 走看看