Chương trình trò chuyện máy khách đơn giản trong python

Trong bài viết này, chúng ta sẽ đi từ đầu đến cuối và tạo phòng chat bằng Python. Trước khi đi sâu vào, chúng ta hãy hiểu khái niệm về phòng chat là gì

Chatroom là gì?

Phòng trò chuyện là không gian để mọi người trên toàn cầu giao tiếp với nhau về các chủ đề khác nhau. Các chủ đề có thể bao gồm từ mọi thứ chẳng hạn như phát triển ứng dụng cho đến bất kỳ công thức nấu ăn nào được thực hiện trong nhà bếp. Phòng trò chuyện là nền tảng tuyệt vời để học cách giao tiếp. Trong bài viết này, tôi sẽ giới thiệu với các bạn cách tạo một phòng chat nhỏ bằng các khái niệm cơ bản với socket và python


Bây giờ, trong hướng dẫn này, chúng ta sẽ xây dựng một ứng dụng trò chuyện thời gian thực bằng cách sử dụng socket trong python. Hãy để chúng tôi bắt đầu với khái niệm về ổ cắm

Ổ cắm là gì?

Ổ cắm, theo thuật ngữ mạng, đóng vai trò trung gian kết nối lớp ứng dụng với lớp vận chuyển trong bộ giao thức TCP/IP. Các ổ cắm mạng này có ở phía máy khách và phía máy chủ

Lập trình socket là cách kết nối hai nút trên mạng để giao tiếp với nhau. Một ổ cắm (nút) lắng nghe trên một cổng cụ thể tại một IP, trong khi một ổ cắm khác tiếp cận với cổng kia để tạo kết nối. Máy chủ hình thành ổ cắm người nghe trong khi máy khách liên hệ với máy chủ

Chương trình trò chuyện máy khách đơn giản trong python
Mô hình máy chủ khách hàng

Chatroom Server-Side Socket Lập trình

Máy chủ chấp nhận kết nối từ máy khách để thiết lập giao diện mạng. Chúng tôi cần đảm bảo rằng khách hàng/người dùng là duy nhất. Do đó, chúng tôi chỉ định một địa chỉ IP duy nhất cho mỗi khách hàng. Tuy nhiên, nhiều người dùng muốn được xác định bằng tên người dùng. Do đó, chúng tôi cũng sẽ chỉ định tên người dùng

Vai trò của máy chủ là thu thập bất kỳ tin nhắn đến nào và gửi chúng đến máy khách/máy khách khác

Hãy bắt đầu mã hóa phía máy chủ. Đầu tiên, tạo một tệp có tên

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
3

1. Nhập thư viện cần thiết

import socket
import sys
import time

Đầu tiên, chúng tôi nhập thư viện

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
4 vì thư viện python này chứa các chức năng cần thiết để triển khai ổ cắm

Thư viện

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
5 cung cấp module hệ thống chịu trách nhiệm cung cấp dữ liệu liên quan đến thư mục hệ thống, chức năng và phương thức

Mô-đun

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
6 cho phép chúng tôi thực hiện nhiều hành động về chuyển đổi và mô tả thời gian

2. Tạo Socket và lấy Hostname

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080

Hàm

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
7 là hàm tạo của thư viện ổ cắm để tạo ổ cắm

Khi ổ cắm được tạo, chúng tôi truy xuất tên máy chủ/tên thiết bị cục bộ bằng cách sử dụng

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
8, đây lại là một chức năng của thư viện ổ cắm

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
8 khi được gửi với tham số
new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
0 sẽ truy xuất địa chỉ IP của người dùng khác và IP này được lưu trữ trong
new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
1

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
2 được chỉ định là 8080. Cổng này được chọn vì đây là cổng không có mặc định trên hầu hết các máy. Nói chung, các cổng như 3000, 5000, v.v. được sử dụng cho các ứng dụng khác như chuyển phát nhanh. js. Bạn cũng có thể chạy nó trên bất kỳ cổng nào, chẳng hạn như '1234'

3. Liên kết máy chủ và cổng

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)

Bây giờ chúng ta sẽ liên kết cổng và máy chủ với nhau bằng hàm liên kết được gọi trên đối tượng ổ cắm

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
3. Khi liên kết thành công, nó sẽ in “Liên kết thành công. ” trên bảng điều khiển

4. Lắng nghe kết nối

import socket
import sys
import time
4

Ở đây, chúng tôi sử dụng hàm

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
4 nhận một đối số là
new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
5. Tham số này có thể là một số nguyên bất kỳ như 1,2,3,…

5. Chấp nhận kết nối đến

import socket
import sys
import time
7

Biến đầu tiên là

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
6 được kết nối với ổ cắm và biến 'add' được gán cho địa chỉ IP của máy khách

6. Lưu trữ dữ liệu kết nối đến

import socket
import sys
import time
9

Các chi tiết của kết nối đến được lưu trữ trong biến client_name. Tên của khách hàng có thể dài tối đa 1024 byte. Nó được giải mã trên máy chủ và in một thông báo rằng nó đã được kết nối. Sau đó, máy chủ sẽ gửi tên máy chủ

7. Gửi gói tin/tin nhắn

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
0

Người dùng nhập tin nhắn. Điều này được mã hóa bằng cách sử dụng

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
7 và sau đó được gửi qua ổ cắm. Tin nhắn được gửi bằng hàm
new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
8 được gọi trên đối tượng kết nối được tạo trong khi gọi hàm accept() trước đó. Sau đó, nó sẽ hiển thị “tin nhắn đã được gửi…”

Tin nhắn đến được nhận bằng cách sử dụng

new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
9 của đối tượng kết nối. Nó có thể nhận tới 1024 byte thông tin. Tin nhắn được giải mã ở phía máy chủ bằng cách sử dụng
import socket
import sys
import time
40

Hoàn thành mã phòng trò chuyện phía máy chủ

Đây là mã phòng chat phía máy chủ hoàn chỉnh

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
5

Chương trình trò chuyện máy khách đơn giản trong python
Đầu ra của máy chủ trên dấu nhắc lệnh

Chatroom Client-Side Socket Lập trình

Chúng tôi sẽ tạo một tệp có tên khách hàng. py và tạo mã của chúng tôi để kết nối và giao tiếp với máy chủ trò chuyện

1. Nhập thư viện

import socket
import sys
import time

Chúng tôi nhập các thư viện tương tự được sử dụng ở phía máy chủ

2. Tạo Socket và chấp nhận tên máy chủ đầu vào của người dùng

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
7

  • Ổ cắm tại máy chủ được tạo bằng phương pháp
    new_socket = socket.socket()
    host_name = socket.gethostname()
    s_ip = socket.gethostbyname(host_name)
    port = 8080
    
    7
  • Tên máy chủ của máy chủ được lấy ở phía máy khách và được lưu dưới dạng
    import socket
    import sys
    import time
    
    42
  • Địa chỉ IP được lưu trữ trong
    import socket
    import sys
    import time
    
    43
  • Cổng máy chủ được lưu trữ dưới dạng 8080 trong biến
    import socket
    import sys
    import time
    
    44

Xin lưu ý, cổng này phải khớp với cổng được đề cập trên mã phía máy chủ

3. Kết nối với máy chủ

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
0

Các chi tiết của máy chủ (bạn bè) được nhập đầu tiên. Xin lưu ý, điều quan trọng là phải nhập địa chỉ IP chính xác nếu không liên lạc sẽ thất bại

Tên máy chủ và cổng được liên kết với nhau theo một cách và được kết nối với ổ cắm

4. Nhận Gói tin/Tin nhắn từ Máy chủ

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
1

Để nhận tin nhắn, socket_server gọi hàm recv() để nhận 1024 dữ liệu. Điều này được lưu trữ trong đối tượng tin nhắn và được giải mã bằng chức năng giải mã (). Tin nhắn sau đó được in với tên máy chủ của máy chủ và tin nhắn đã nhận

Máy khách có thể nhập bất kỳ tin nhắn nào làm đầu vào và mã hóa giống nhau và gửi nó đến máy chủ bằng cách sử dụng ổ cắm

Do đó, chúng tôi đã triển khai phòng trò chuyện thời gian thực bằng socket và python

Hoàn thành mã phòng chat phía khách hàng

Đây là mã hoàn chỉnh của phía khách hàng trong phòng chat của chúng tôi

new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
port = 8080
2

Chương trình trò chuyện máy khách đơn giản trong python
Đầu ra của máy khách trên dấu nhắc lệnh

Sự kết luận

Sao chép cả hai đoạn mã hoàn chỉnh, lưu chúng dưới dạng máy chủ. py và khách hàng. py tương ứng và bạn sẽ có phòng chat đầu tiên của mình bằng Python. Nó rất dễ làm việc và tôi chắc rằng bạn sẽ học được nhiều khía cạnh thực tế của lập trình socket