Điện tử python ipc

Về cơ bản, không có mạng nào được tạo chỉ có một thiết bị đầu cuối được sử dụng khi điện tử được khởi chạy và hơn là từ bên trong javascript [ điện tử ], chương trình python được bắt đầu dưới dạng quy trình con. Hai chương trình này giao tiếp qua các luồng tiêu chuẩn

Cấu trúc của ví dụ

│ 
├── docs
│   ├── README.md
│   └── LICENSE
|
├── img
│   └── example.png
|
├── gui_example.html
├── gui_example.css
├── gui_example.js
├── main.js
│ 
├── python_example.py
| 
├── config.json
└── package.json

Hướng dẫn cài đặt

  1. Để tải xuống và cài đặt điện tử [OS X hoặc Linux], bạn phải tải xuống từ npm-electron bằng cách sử dụng

    npm install electron --save-dev
    

    npm install -g electron
    

    [nếu bạn chưa cài đặt npm, hãy sử dụng liên kết này để tải xuống. ]

  2. Sao chép kho lưu trữ này

    git clone //github.com/keybraker/electron-GUI-for-python.git
    

Hướng dẫn thực hiện

  1. Mở một cửa sổ đầu cuối và cd vào dự án nhân bản

    cd electron-GUI-for-python
    

  2. Khởi tạo ứng dụng điện tử [lần đầu tiên]

    npm i
    

  3. Chạy ứng dụng điện tử

    npm start
    

  4. Một trang sẽ sinh ra như sau

  1. Nhấn nút KHỞI ĐỘNG CHƯƠNG TRÌNH_

    điều này sẽ khởi chạy một ứng dụng python có một vòng lặp bên trong, đang chờ dữ liệu được gửi từ js

  2. Nhấn nút TƯƠNG TÁC VỚI CHƯƠNG TRÌNH

    điều này sẽ gửi một tin nhắn có tên "xin chào" từ js tới python và python sẽ đọc nó và in một tin nhắn

  3. Nhấn nút KẾT THÚC CHƯƠNG TRÌNH

    một thông báo kết thúc ["chấm dứt"] được gửi đến chương trình biết dừng vòng lặp và thực thi

  4. Nhấn nút CÁCH MỞ TẬP TIN

    từ

    npm install -g electron
    
    1 một ipc. gửi tin nhắn được gửi đến chính. js, sau đó sẽ đọc và xuất các giá trị
    npm install -g electron
    
    2 [tính năng nhanh để lưu cài đặt]

Hướng dẫn phiên dịch

Chức năng quan trọng có thể được tìm thấy trong các tệp

npm install -g electron
1 nơi lõi của điện tử được. Người nghe được triển khai ở đó để chờ các sự kiện nhấp chuột để kích hoạt khởi tạo chương trình, liên lạc và kết thúc. Chương trình
│ 
├── docs
│   ├── README.md
│   └── LICENSE
|
├── img
│   └── example.png
|
├── gui_example.html
├── gui_example.css
├── gui_example.js
├── main.js
│ 
├── python_example.py
| 
├── config.json
└── package.json
1 là ứng dụng bên ngoài hoặc bên thứ 3 mà điện tử gọi, là một lệnh chờ vòng lặp for đơn giản. Nó đáp ứng các lệnh và kết thúc khi gửi một chuỗi trống, "chấm dứt" hoặc bằng cách nhấn nút kết thúc chương trình

lộ. Bài đăng này có thể chứa các liên kết, có nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi nhận được hoa hồng. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng

Phòng trò chuyện là một giao diện cho phép hai hoặc nhiều người trò chuyện và gửi tin nhắn cho mọi người trong phòng. Trong hướng dẫn này, bạn sẽ học cách xây dựng một máy chủ phòng trò chuyện đơn giản và cho phép nhiều máy khách kết nối với nó bằng ổ cắm trong Python. Trong hướng dẫn này, bạn sẽ tìm hiểu cách xây dựng một máy chủ phòng trò chuyện đơn giản và cho phép nhiều máy khách kết nối với máy chủ đó bằng socket trong Python.

Chúng tôi sẽ sử dụng ổ cắm mô-đun được tích hợp sẵn với Python và cung cấp cho chúng tôi các ổ cắm hoạt động được sử dụng rộng rãi trên Internet, bởi vì chúng tôi đứng sau bất kỳ kết nối nào với bất kỳ mạng nào

Để bắt đầu và để thay đổi màu văn bản, chúng ta sẽ cần đóng gói Colorama để gán màu cho mỗi máy khách trong phòng trò chuyện. Gói colorama để chỉ định màu in cho từng khách hàng trong phòng trò chuyện.

________số 8

Bởi vì chúng tôi đang sử dụng ổ cắm, nếu chúng tôi cần một máy chủ và mã máy khách, hãy bắt đầu với phía máy chủ

Host code

Trong kiến ​​trúc của chúng tôi, toàn bộ công việc của máy chủ đang thực hiện hai hoạt động thiết yếu

  • Lắng nghe các kết nối của khách hàng sắp tới, nếu một máy khách mới được kết nối, chúng tôi sẽ thêm nó vào bộ sưu tập ổ cắm máy khách của chúng tôi
  • Bắt đầu một luồng mới cho mỗi máy khách được kết nối để tiếp tục nghe các thông báo sắp được gửi từ máy khách và phát nó cho tất cả các máy khách khác

Mã dưới đây tạo ra ổ cắm TCP và liên kết nó với địa chỉ máy chủ, sau đó lắng nghe các kết nối sắp tới

import socket
from threading import Thread

# server's IP address
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5002 # port we want to use
separator_token = "" # we will use this to separate the client name & message

# initialize list/set of all connected client's sockets
client_sockets = set[]
# create a TCP socket
s = socket.socket[]
# make the port as reusable port
s.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
# bind the socket to the address we specified
s.bind[[SERVER_HOST, SERVER_PORT]]
# listen for upcoming connections
s.listen[5]
print[f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}"]

Lưu ý rằng tôi đã sử dụng "0. 0. 0. 0" làm địa chỉ IP máy chủ. Điều này có nghĩa là tất cả các địa chỉ IPv4 trên máy cục bộ. Bạn có thể tự hỏi, tại sao chúng ta không chỉ sử dụng localhost hoặc "127. 0. 0. 1"? Chà, nếu máy chủ có hai địa chỉ IP, hãy nói "192. 168. 1. 2" on network and "10. 0. 0. 1" trên một mạng khác, thì máy chủ lắng nghe trên cả hai mạng. "0. 0. 0. 0" làm địa chỉ IP của máy chủ. điều này có nghĩa là tất cả các địa chỉ IPv4 trên máy cục bộ. Bạn có thể thắc mắc, tại sao chúng ta không chỉ sử dụng localhost hoặc "127. 0. 0. 1" ? Chà, nếu máy chủ có hai địa chỉ IP, hãy nói "192. 168. 1. 2" trên mạng và "10. 0. 0. 1" trên một mạng khác, thì máy chủ sẽ lắng nghe trên cả hai mạng.

Chúng tôi không chấp nhận kết nối, vì chúng tôi không gọi phương thức

import socket
from threading import Thread

# server's IP address
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5002 # port we want to use
separator_token = "" # we will use this to separate the client name & message

# initialize list/set of all connected client's sockets
client_sockets = set[]
# create a TCP socket
s = socket.socket[]
# make the port as reusable port
s.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
# bind the socket to the address we specified
s.bind[[SERVER_HOST, SERVER_PORT]]
# listen for upcoming connections
s.listen[5]
print[f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}"]
1, mã dưới đây hoàn thành công thức mã hóa máy chủ

npm install electron --save-dev
1

Như đã đề cập trước đây, chúng tôi bổ sung ổ cắm máy khách được kết nối vào bộ sưu tập ổ cắm của chúng tôi và sau đó chúng tôi bắt đầu một luồng mới và chúng tôi đặt nó thành một daemon luồng [kiểm tra hướng dẫn

import socket
from threading import Thread

# server's IP address
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5002 # port we want to use
separator_token = "" # we will use this to separate the client name & message

# initialize list/set of all connected client's sockets
client_sockets = set[]
# create a TCP socket
s = socket.socket[]
# make the port as reusable port
s.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
# bind the socket to the address we specified
s.bind[[SERVER_HOST, SERVER_PORT]]
# listen for upcoming connections
s.listen[5]
print[f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}"]
0, nếu vậy, thì nó sẽ gửi nó cho tất cả các máy khách được kết nối khác

Cuối cùng, hãy đóng tất cả các ổ cắm

npm install electron --save-dev
4

Được rồi, đó là mã máy chủ, hãy đi sâu vào mã máy khách

Mã khách hàng

Khách hàng thực hiện ba hoạt động cơ bản

  • Connected with the host
  • Tiếp tục nghe tin nhắn đến từ máy chủ [phải là máy khách đã gửi tin nhắn đến máy chủ và máy chủ đã phát nó] và đưa nó vào bảng điều khiển
  • Đang chờ người dùng nhập tin nhắn để gửi đến máy chủ

This is the first code for active

npm install electron --save-dev
5

Là một hoạt động phụ, chúng tôi cũng đặt một màu cho mỗi máy khách, bạn sẽ thấy nó ở đầu ra. Ngoài ra, hãy đặt tên cho từng máy khách, vì vậy chúng tôi có thể phân biệt giữa các máy khách

npm install electron --save-dev
6

Mã dưới đây chịu trách nhiệm cho hoạt động thứ hai;

npm install electron --save-dev
7

Chúng tôi cũng muốn nó nằm trong một luồng riêng như một trình nền của luồng, vì vậy chúng tôi có thể làm những công việc khác nhau khi nghe tin nhắn

Bây giờ chúng ta hãy thực hiện nhiệm vụ cuối cùng;

npm install electron --save-dev
8

Chúng tôi bổ sung thêm màu sắc cho khách hàng, tên và thời gian hiện tại trong thông báo sẽ được gửi, chúng tôi gửi tin nhắn bằng phương thức thông báo

Diễn đàn

Được rồi, bây giờ chúng ta đã hoàn thành cả hai công thức nấu ăn, hãy diễn. Đầu tiên, chúng ta hãy chạy một và chỉ một phiên bản máy chủ

Tuyệt vời, máy chủ đang lắng nghe các kết nối khách hàng sắp tới, chúng ta hãy thử chạy một phiên bản khách hàng

Bây giờ máy khách đã được kết nối với máy chủ và được nhắc đến tên người dùng, để chắc chắn rằng nó đã được kết nối, hãy quay lại bảng điều khiển máy chủ và bạn sẽ thấy nó thực sự được kết nối

Lưu ý rằng chúng tôi đang ở địa chỉ localhost [127. 0. 0. 1] ngay bây giờ, vì đó là cùng một máy, nhưng nếu bạn muốn kết nối từ các máy khác trong cùng một mạng, bạn cũng có thể làm điều đó, chỉ cần đảm bảo thay đổi

import socket
from threading import Thread

# server's IP address
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5002 # port we want to use
separator_token = "" # we will use this to separate the client name & message

# initialize list/set of all connected client's sockets
client_sockets = set[]
# create a TCP socket
s = socket.socket[]
# make the port as reusable port
s.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
# bind the socket to the address we specified
s.bind[[SERVER_HOST, SERVER_PORT]]
# listen for upcoming connections
s.listen[5]
print[f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}"]
3 trong máy khách Mã từ 127. 0. 0. 1 đến địa chỉ IP riêng của máy chủ. 127. 0. 0. 1 ] hiện tại, vì đó là cùng một máy, nhưng nếu bạn muốn kết nối từ các máy khác trong cùng một mạng, bạn cũng có thể làm điều đó, chỉ cần đảm bảo thay đổi
import socket
from threading import Thread

# server's IP address
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 5002 # port we want to use
separator_token = "" # we will use this to separate the client name & message

# initialize list/set of all connected client's sockets
client_sockets = set[]
# create a TCP socket
s = socket.socket[]
# make the port as reusable port
s.setsockopt[socket.SOL_SOCKET, socket.SO_REUSEADDR, 1]
# bind the socket to the address we specified
s.bind[[SERVER_HOST, SERVER_PORT]]
# listen for upcoming connections
s.listen[5]
print[f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}"]
3 trong mã máy khách từ 127. 0. 0. 1đến địa chỉ IP riêng của máy chủ

Hãy chạy một khách hàng khác để chúng ta có thể trò chuyện

Thật tuyệt vời, như bạn có thể thấy, mỗi máy khách có màu sắc để chúng tôi có thể phân biệt giữa những người dùng, hãy chạy một ứng dụng khách thứ ba cho vui

Kết luận

Tuyệt vời, bây giờ mọi tin nhắn được gửi từ một khách hàng cụ thể đều được gửi đến tất cả các máy khách khác. Lưu ý các màu được thay đổi bất kỳ khi nào bạn thực hiện lại tập lệnh Client. py. Lưu ý rằng màu sắc được thay đổi bất cứ khi nào bạn chạy lại ứng dụng khách . tập lệnh py .

Vui lòng kiểm tra mã đầy đủ để bạn có thể dễ dàng tự chạy chúng

Tôi khuyến khích bạn thêm nhiều tính năng vào chương trình này. Ví dụ. bạn có thể đưa ra thông báo cho tất cả người dùng khi khách hàng mới được kết nối

Để biết thêm hướng dẫn ổ cắm Python, hãy kiểm tra sau đây

  • Cách chuyển các tệp trong mạng bằng ổ cắm trong Python
  • Làm bất kỳ thế nào để tạo một vỏ ngược trong Python

Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học & nbsp; . Bạn cũng có thể kiểm tra trang & NBSP;

Chủ Đề