How to build your own chat room using python

PHPz
Release: 2023-05-11 20:46:04
forward
1126 people have browsed it

    1. Basic Concepts of Network Programming

    1. IP address: The unique identifier of each device in the network, used to connect to the network Positioning equipment.

    2. Port: identifies different network applications on the device. One port corresponds to a specific service or application.

    3. Protocol: Rules for data communication, such as TCP and UDP.

    2. Introduction and principles of Socket programming

    1. Socket is a communication handle used to transmit data in the network.

    2. Python's socket library provides a wealth of functions and classes for implementing network programming.

    3. Socket programming mainly includes operations such as creating socket objects, binding addresses and ports, monitoring connections, accepting and sending data, etc.

    3. Chat room architecture and functional requirements

    1. The chat room is divided into server side and client side.

    2. The server is responsible for receiving the client’s connection request and forwarding the client’s message.

    3. The client is responsible for establishing a connection with the server and sending and receiving messages.

    4. The chat room needs to support multiple clients online at the same time and receive and send messages in real time.

    4. Implement the chat room server side

    1. Use socket to create a server-side socket object.

    import socket
    import threading
     
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Copy after login

    2. Bind IP address and port.

    server.bind(("0.0.0.0", 8080))
    Copy after login

    3. Listen for client connections.

    server.listen(5)
    Copy after login

    4. When a new client connects, add it to the list of connected clients.

    clients = []
     
    while True:
        client_socket, client_address = server.accept()
        clients.append(client_socket)
        thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
        thread.start()
    Copy after login

    5. Use multi-threading to handle message reception and sending for each client.

    def handle_client(client_socket, client_address):
        print(f"[INFO] Client {client_address} connected.")
        while True:
            try:
                message = client_socket.recv(1024).decode("utf-8")
                if not message:
                    break
                print(f"[{client_address}] {message}")
                broadcast(client_socket, f"[{client_address}] {message}")
            except:
                break
        print(f"[INFO] Client {client_address} disconnected.")
        clients.remove(client_socket)
        client_socket.close()
    ``
    Copy after login

    6. When the client disconnects, remove it from the client list

        clients.remove(client_socket)
        client_socket.close()
    Copy after login

    7. Broadcast the message to other clients.

    def broadcast(from_client_socket, message):
        for client_socket in clients:
            if client_socket != from_client_socket:
                client_socket.send(message.encode("utf-8"))
    Copy after login

    8. The complete code of the chat room server:

    import socket
    import threading
     
    def handle_client(client_socket, client_address):
        print(f"[INFO] Client {client_address} connected.")
        while True:
            try:
                message = client_socket.recv(1024).decode("utf-8")
                if not message:
                    break
                print(f"[{client_address}] {message}")
                broadcast(client_socket, f"[{client_address}] {message}")
            except:
                break
        print(f"[INFO] Client {client_address} disconnected.")
        clients.remove(client_socket)
        client_socket.close()
     
    def broadcast(from_client_socket, message):
        for client_socket in clients:
            if client_socket != from_client_socket:
                client_socket.send(message.encode("utf-8"))
     
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("0.0.0.0", 8080))
    server.listen(5)
     
    print("[INFO] Server is listening...")
     
    clients = []
     
    while True:
        client_socket, client_address = server.accept()
        clients.append(client_socket)
        thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
        thread.start()
    Copy after login

    5. Implement the chat room client

    1. Use socket to create a client socket object.

    import socket
    import threading
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Copy after login

    2. Connect to the IP address and port of the server.

    client.connect(("127.0.0.1", 8080))
    Copy after login

    3. Use multi-threading to process messages sent by the server.

    def receive_message():
        while True:
            message = client.recv(1024).decode("utf-8")
            print(message)
     
    thread = threading.Thread(target=receive_message)
    thread.start()
    Copy after login

    4. Receive the message entered by the user and send it to the server.

    while True:
        message = input()
        client.send(message.encode("utf-8"))
    Copy after login

    5. The complete code of the chat room client:

    import socket
    import threading
     
    def receive_message():
        while True:
            message = client.recv(1024).decode("utf-8")
            print(message)
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(("127.0.0.1", 8080))
     
    print("[INFO] Connected to the server.")
     
    thread = threading.Thread(target=receive_message)
    thread.start()
     
    while True:
        message = input()
        client.send(message.encode("utf-8"))
    Copy after login

    6. Test the chat room

    Start the chat room server and multiple clients respectively. Send a message on the client and observe whether other clients can receive the message. Try disconnecting the client and observe the behavior of the server and other clients.

    The above is the detailed content of How to build your own chat room using python. For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    source:yisu.com
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!