Máy chủ trò chuyện Python

Trong bài viết này, chúng ta sẽ xem cách tạo hệ thống phòng trò chuyện máy chủ và máy khách bằng Lập trình Socket với Python

Ổ cắm là điểm cuối của bất kỳ kênh liên lạc nào. Chúng được sử dụng để kết nối máy chủ và máy khách. Ổ cắm là Bi-Directional. Trong khu vực này, chúng tôi sẽ thiết lập các ổ cắm cho mỗi đầu và thiết lập hệ thống phòng trò chuyện giữa các máy khách khác nhau thông qua máy chủ. Phía máy chủ có một số cổng để kết nối với ổ cắm máy khách. Khi khách hàng cố gắng kết nối với cùng một cổng, thì kết nối sẽ được thiết lập cho phòng trò chuyện

Về cơ bản có hai phần. Phía máy chủ và phía máy khách. Khi tập lệnh phía máy chủ đang chạy, nó sẽ đợi mọi yêu cầu kết nối đang hoạt động. Khi một kết nối được thiết lập, nó có thể giao tiếp với nó

Trong trường hợp này, chúng tôi đang sử dụng localhost. Nếu các máy được kết nối qua mạng LAN, thì chúng ta có thể sử dụng địa chỉ IP để liên lạc. Máy chủ sẽ hiển thị IP của nó và yêu cầu đặt tên cho máy chủ. Từ phía máy khách, chúng tôi phải đề cập đến một cái tên và cả địa chỉ IP của máy chủ để kết nối

Trong ngôn ngữ Python, socket [hay socket mạng] là một module dùng để giao tiếp giữa hai máy tính. Nó cung cấp hai loại giao diện để truy cập mạng, cụ thể là cấp thấp [kết nối phụ thuộc vào nền tảng — Ví dụ. Telnet] và cấp cao [các kết nối phụ thuộc vào ứng dụng — Ví dụ. HTTP, FTP, SMTP, v.v. ]. Đây là một hướng dẫn đơn giản để thiết lập kết nối ổ cắm cấp thấp giữa máy chủ và máy khách để truyền thông điệp bằng giao thức TCP/IP

Trò chuyện máy chủ và máy khách

Trong hướng dẫn này, tôi đã sử dụng hai script server. py để phục vụ dữ liệu bằng cách gửi lời mời đến máy khách và máy khách. py để nhận dữ liệu về việc chấp nhận lời mời. Sau khi chấp nhận lời mời, cả máy chủ và máy khách đều chia sẻ thông báo lẫn nhau

- Người phục vụ -

Tập lệnh máy chủ thực hiện chuỗi các chức năng như socket[],

# client.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
shost = socket.gethostname[]
ip = socket.gethostbyname[shost]
print[shost, "[", ip, "]\n"]
host = input[str["Enter server address: "]]
name = input[str["\nEnter your name: "]]
port = 1234
print["\nTrying to connect to ", host, "[", port, "]\n"]
time.sleep[1]
s.connect[[host, port]]
print["Connected...\n"]

s.send[name.encode[]]
s_name = s.recv[1024]
s_name = s_name.decode[]
print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]

while True:
    message = s.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        s.send[message.encode[]]
        print["\n"]
        break
    s.send[message.encode[]]
0,
# client.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
shost = socket.gethostname[]
ip = socket.gethostbyname[shost]
print[shost, "[", ip, "]\n"]
host = input[str["Enter server address: "]]
name = input[str["\nEnter your name: "]]
port = 1234
print["\nTrying to connect to ", host, "[", port, "]\n"]
time.sleep[1]
s.connect[[host, port]]
print["Connected...\n"]

s.send[name.encode[]]
s_name = s.recv[1024]
s_name = s_name.decode[]
print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]

while True:
    message = s.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        s.send[message.encode[]]
        print["\n"]
        break
    s.send[message.encode[]]
1 và
# client.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
shost = socket.gethostname[]
ip = socket.gethostbyname[shost]
print[shost, "[", ip, "]\n"]
host = input[str["Enter server address: "]]
name = input[str["\nEnter your name: "]]
port = 1234
print["\nTrying to connect to ", host, "[", port, "]\n"]
time.sleep[1]
s.connect[[host, port]]
print["Connected...\n"]

s.send[name.encode[]]
s_name = s.recv[1024]
s_name = s_name.decode[]
print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]

while True:
    message = s.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        s.send[message.encode[]]
        print["\n"]
        break
    s.send[message.encode[]]
2 [lặp lại cho nhiều máy khách] để giao tiếp với máy khách. Mô tả của từng chức năng được sử dụng trong tập lệnh máy chủ được đưa ra bên dưới

  • socket[] – tạo ổ cắm bằng cách sử dụng họ địa chỉ, loại ổ cắm và giao thức
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    0 – liên kết ổ cắm với địa chỉ đã cho [tên máy chủ và cặp số cổng]
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    1 – cho phép máy chủ chấp nhận kết nối từ [các] máy khách
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    2 – chờ và chấp nhận yêu cầu kết nối từ [các] máy khách
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    0 – lấy tên máy chủ của máy
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    1 – dịch tên máy chủ sang địa chỉ định dạng IPv4
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    2 – nhận tin nhắn được gửi qua TCP
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    3 – giải mã tin nhắn bằng codec
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    4 – gửi tin nhắn được gửi qua TCP
Để biết thêm chi tiết về các phương thức, chức năng, mô-đun và đối tượng, hãy tham khảo trang web chính thức của Python [python. tổ chức]

Mã nguồn

# server.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
host = socket.gethostname[]
ip = socket.gethostbyname[host]
port = 1234
s.bind[[host, port]]
print[host, "[", ip, "]\n"]
name = input[str["Enter your name: "]]
           
s.listen[1]
print["\nWaiting for incoming connections...\n"]
conn, addr = s.accept[]
print["Received connection from ", addr[0], "[", addr[1], "]\n"]

s_name = conn.recv[1024]
s_name = s_name.decode[]
print[s_name, "has connected to the chat room\nEnter [e] to exit chat room\n"]
conn.send[name.encode[]]

while True:
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        conn.send[message.encode[]]
        print["\n"]
        break
    conn.send[message.encode[]]
    message = conn.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]

- Khách hàng -

Tập lệnh máy khách thực hiện chuỗi các chức năng như socket[]

# client.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
shost = socket.gethostname[]
ip = socket.gethostbyname[shost]
print[shost, "[", ip, "]\n"]
host = input[str["Enter server address: "]]
name = input[str["\nEnter your name: "]]
port = 1234
print["\nTrying to connect to ", host, "[", port, "]\n"]
time.sleep[1]
s.connect[[host, port]]
print["Connected...\n"]

s.send[name.encode[]]
s_name = s.recv[1024]
s_name = s_name.decode[]
print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]

while True:
    message = s.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        s.send[message.encode[]]
        print["\n"]
        break
    s.send[message.encode[]]
6 để giao tiếp với máy chủ. Mô tả của từng chức năng được sử dụng trong tập lệnh máy chủ được đưa ra bên dưới

  • socket[] – tạo ổ cắm bằng cách sử dụng họ địa chỉ, loại ổ cắm và giao thức
  • # client.py
    import time, socket, sys
    
    print["\nWelcome to Chat Room\n"]
    print["Initialising....\n"]
    time.sleep[1]
    
    s = socket.socket[]
    shost = socket.gethostname[]
    ip = socket.gethostbyname[shost]
    print[shost, "[", ip, "]\n"]
    host = input[str["Enter server address: "]]
    name = input[str["\nEnter your name: "]]
    port = 1234
    print["\nTrying to connect to ", host, "[", port, "]\n"]
    time.sleep[1]
    s.connect[[host, port]]
    print["Connected...\n"]
    
    s.send[name.encode[]]
    s_name = s.recv[1024]
    s_name = s_name.decode[]
    print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]
    
    while True:
        message = s.recv[1024]
        message = message.decode[]
        print[s_name, ":", message]
        message = input[str["Me : "]]
        if message == "[e]":
            message = "Left chat room!"
            s.send[message.encode[]]
            print["\n"]
            break
        s.send[message.encode[]]
    6 – kết nối với ổ cắm máy chủ tại địa chỉ
Để biết thêm chi tiết về các phương thức, chức năng, mô-đun và đối tượng, hãy tham khảo trang web chính thức của Python [python. tổ chức]

Mã nguồn

# client.py
import time, socket, sys

print["\nWelcome to Chat Room\n"]
print["Initialising....\n"]
time.sleep[1]

s = socket.socket[]
shost = socket.gethostname[]
ip = socket.gethostbyname[shost]
print[shost, "[", ip, "]\n"]
host = input[str["Enter server address: "]]
name = input[str["\nEnter your name: "]]
port = 1234
print["\nTrying to connect to ", host, "[", port, "]\n"]
time.sleep[1]
s.connect[[host, port]]
print["Connected...\n"]

s.send[name.encode[]]
s_name = s.recv[1024]
s_name = s_name.decode[]
print[s_name, "has joined the chat room\nEnter [e] to exit chat room\n"]

while True:
    message = s.recv[1024]
    message = message.decode[]
    print[s_name, ":", message]
    message = input[str["Me : "]]
    if message == "[e]":
        message = "Left chat room!"
        s.send[message.encode[]]
        print["\n"]
        break
    s.send[message.encode[]]

Các bước thực hiện

1. Chạy máy chủ. tập lệnh py trong ứng dụng Python

2. Ghi lại địa chỉ IP cục bộ và chuyển nó cho khách hàng [thư mời]. Ngoài ra, bạn cũng có thể lấy địa chỉ IP cục bộ thông qua trực tuyến bằng công cụ L-IP

3. Chạy ứng dụng khách. py trong ứng dụng Python sử dụng địa chỉ IP cục bộ do máy chủ gửi [chấp nhận lời mời]

Làm cách nào để tạo một máy chủ trò chuyện bằng Python?

Đầu tiên, tạo một tệp có tên máy chủ. py. .
Nhập thư viện cần thiết. nhập ổ cắm nhập sys thời gian nhập. .
Tạo Socket và lấy Hostname. .
Liên kết máy chủ và cổng. .
Lắng nghe kết nối. .
Chấp nhận kết nối đến. .
Lưu trữ dữ liệu kết nối đến. .
Gửi gói tin/tin nhắn. .
Nhập thư viện

Làm cách nào để tạo máy chủ trò chuyện?

Bước 1. Thiết lập ServerSocket trong Lớp máy chủ. .
Bước 2. Tạo một Ổ cắm trong Lớp Đăng nhập. .
Bước 3. Tạo vòng lặp để liên tục chấp nhận khách hàng. .
Bước 4. Tạo chủ đề máy khách. .
Bước 5. Tạo chủ đề máy chủ. .
Bước 6. Tạo Chủ đề Máy khách Gửi và Nhận Dữ liệu. .
Bước 7. Tạo luồng máy chủ gửi và nhận dữ liệu

Máy chủ trò chuyện là gì?

Máy chủ trò chuyện là phiên bản máy chủ được thiết lập để cung cấp tài nguyên cho dịch vụ trò chuyện có liên quan . Máy chủ chấp nhận tin nhắn được gửi bởi người dùng của ứng dụng trò chuyện và chuyển tiếp chúng tới [những] người nhận. Các máy chủ trò chuyện phổ biến nhất là IRC và XMPP.

Làm thế nào để xây dựng một phòng trò chuyện?

Để tạo phòng trò chuyện .
Trên menu Tệp, nhấp vào Tạo Phòng Trò chuyện
Trong hộp Tên phòng trò chuyện, hãy nhập tên cho phòng trò chuyện. .
làm một điều trong số sau đây. .
Nhập chủ đề và mô tả cho phòng trò chuyện [tùy chọn], rồi bấm vào Tiếp theo
Để tạo phòng trò chuyện chỉ có bạn là thành viên duy nhất, hãy chọn Bắt đầu với chỉ mình tôi

Chủ Đề