Lập trình mạng với Python: Tạo chat room

Note - Tip - Trick Python

0.0 (0 đánh giá)
Tạo bởi K9 Cập nhật lần cuối 14:31 13-12-2024 1.051 lượt xem 1 bình luận
Tác giả/Dịch giả: Đang cập nhật
Học nhanh

Danh sách bài học

Lập trình mạng với Python: Tạo chat room

Bắt đầu với Lập trình Mạng trong Python: Tạo Chat Room đơn giản!

Bạn có biết rằng Python không chỉ là công cụ mạnh mẽ để xử lý dữ liệu hay làm AI mà còn giúp bạn xây dựng ứng dụng mạng như chat room, máy chủ web, hay game online? Hôm nay, mình sẽ hướng dẫn các bạn làm một chat room đơn giản để hiểu về lập trình mạng.


Lập trình mạng là gì?

Lập trình mạng là việc giao tiếp giữa các máy tính qua Internet hoặc mạng cục bộ. Python có thư viện mạnh mẽ như socket, giúp bạn dễ dàng xây dựng ứng dụng mạng.


⚙️ Công cụ cần chuẩn bị

  • Python: Hãy cài bản Python 3.7 trở lên (nếu chưa có, tải tại python.org).
  • Editor: Sử dụng VS Code, PyCharm, hoặc bất kỳ trình soạn thảo nào bạn thích.

🚀 Bắt tay vào làm: Chat Room cơ bản

1. Tạo Server (Máy chủ)

Server sẽ chịu trách nhiệm lắng nghe và xử lý tin nhắn từ các client.


import socket
import threading

# Cấu hình server
HOST = "127.0.0.1"  # Địa chỉ localhost
PORT = 12345        # Cổng để giao tiếp

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen()

clients = []
nicknames = []

# Gửi tin nhắn đến tất cả client
def broadcast(message):
    for client in clients:
        client.send(message)

# Xử lý tin nhắn từ client
def handle(client):
    while True:
        try:
            message = client.recv(1024)
            broadcast(message)
        except:
            index = clients.index(client)
            clients.remove(client)
            client.close()
            nickname = nicknames[index]
            broadcast(f"{nickname} đã rời khỏi phòng!".encode("utf-8"))
            nicknames.remove(nickname)
            break

# Chấp nhận kết nối từ client
def receive():
    print("Server đang chạy...")
    while True:
        client, address = server.accept()
        print(f"Kết nối từ {str(address)}")

        client.send("NICK".encode("utf-8"))
        nickname = client.recv(1024).decode("utf-8")
        nicknames.append(nickname)
        clients.append(client)

        print(f"Nickname của client là {nickname}")
        broadcast(f"{nickname} đã tham gia phòng chat!".encode("utf-8"))
        client.send("Chào mừng đến với phòng chat!".encode("utf-8"))

        thread = threading.Thread(target=handle, args=(client,))
        thread.start()

receive()

2. Tạo Client (Người dùng)

Client sẽ kết nối đến server và gửi/nhận tin nhắn.


import socket
import threading

# Cấu hình client
HOST = "127.0.0.1"  # Địa chỉ server (phải khớp với HOST ở server)
PORT = 12345        # Cổng server (phải khớp với PORT ở server)

nickname = input("Nhập nickname của bạn: ")

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))

# Nhận tin nhắn từ server
def receive():
    while True:
        try:
            message = client.recv(1024).decode("utf-8")
            if message == "NICK":
                client.send(nickname.encode("utf-8"))
            else:
                print(message)
        except:
            print("Có lỗi xảy ra!")
            client.close()
            break

# Gửi tin nhắn đến server
def write():
    while True:
        message = f"{nickname}: {input('')}"
        client.send(message.encode("utf-8"))

# Chạy các luồng
receive_thread = threading.Thread(target=receive)
receive_thread.start()

write_thread = threading.Thread(target=write)
write_thread.start()

 Cách chạy chương trình

  1. Chạy file server (server.py) trước.
  2. Mở terminal mới, chạy file client (client.py) để kết nối với server.
  3. Bạn có thể chạy nhiều client (mỗi client là một cửa sổ terminal riêng).
  4. Nhập tin nhắn từ client, và nó sẽ được hiển thị trên tất cả client khác.

Những gì bạn vừa học

  • Server: Dùng thư viện socket để lắng nghe và xử lý các kết nối.
  • Client: Gửi và nhận tin nhắn với server.
  • Threading: Xử lý nhiều kết nối cùng lúc.

💡 Gợi ý nâng cao

  • Thêm giao diện người dùng bằng Tkinter hoặc PyQt.
  • Lưu lịch sử chat vào file.
  • Cho phép gửi tệp hoặc hình ảnh.

💬 Bạn thấy lập trình mạng thú vị chứ? Hãy thử ngay và chia sẻ kết quả trong bình luận nhé! Nếu bạn cần trợ giúp, đừng ngần ngại hỏi mình! 


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Lập trình mạng với Python: Tạo chat room dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Đang cập nhật

Khóa học

Note - Tip - Trick Python

Note - Tip - Trick Python

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
huypro37 đã bình luận 10:23 05-12-2024

Từ room chat em muốn phát triển lên  thành chat riêng 2 người hoặc một nhóm người theo ý muốn thì phải làm sao ạ

Không có video.