Hướng dẫn how can 2 python programs communicate? - làm thế nào 2 chương trình python có thể giao tiếp?

Tôi có hai chương trình Python, một là Bot IRC, sử dụng ổ cắm để kết nối với máy chủ IRC.

Chương trình này có một vòng lặp đọc mọi PRIVMSG từ một kênh cụ thể.

Chương trình thứ hai sẽ nhận được bất kỳ đầu ra chương trình đầu tiên nào [PRIVMSG trong trường hợp này] và chạy các chức năng với nó.

Vì vậy, về cơ bản là:

while 1:
    data = irc.recv[2048]
    if data.find["PRIVMSG " + current_channel + " :"] != -1:
        send_to_second_program[data]

Chương trình thứ hai là

while 1:
    data = get_from_first_program[]
    do_stuff[data]

Có cách nào để thực hiện điều này mà không sử dụng các mô -đun không? Hai chương trình nên được riêng biệt.

Hỏi ngày 21 tháng 12 năm 2015 lúc 15:35Dec 21, 2015 at 15:35

9

Mặc dù bạn có thể sử dụng hàng tá cách để giao tiếp và bạn không cung cấp bối cảnh hoặc yêu cầu, tôi cho rằng bạn đang làm việc trong một dự án nhỏ. Tôi sẽ khuyên bạn nên sử dụng RPC [cuộc gọi thủ tục từ xa]. Sử dụng RPC, bạn có thể gọi các chức năng Python của một ứng dụng khác như thể nó là một hàm có sẵn cục bộ. Kiểm tra một số thư viện RPC cho Python, như //www.zerorpc.io/, dường như là quá đủ cho trường hợp sử dụng của bạn.rpc [remote procedure call]. Using rpc you can call Python functions of another application as if it is a function available locally. Check out some rpc library for Python, like //www.zerorpc.io/, which seems more than enough for your use case.

Có một số nhược điểm khi sử dụng RPC, ví dụ như bạn có thể đọc trong câu trả lời của câu hỏi này, nhưng nếu phạm vi bị hạn chế, tôi nghĩ đây là một trong những cách dễ nhất, không hack, để đạt được mục tiêu của bạn.

Đã trả lời ngày 21 tháng 12 năm 2015 lúc 15:44Dec 21, 2015 at 15:44

ErwinerwinErwin

3.2492 Huy hiệu vàng15 Huy hiệu bạc22 Huy hiệu đồng2 gold badges15 silver badges22 bronze badges

1

Giả sử rằng cả hai chương trình đều nằm trong cùng một thư mục, bạn có thể nhập tệp khác bằng import

Ví dụ, hãy xem xét một tệp a.py. Để nhập nó vào một tệp khác

Đã trả lời ngày 21 tháng 12 năm 2015 lúc 15:41Dec 21, 2015 at 15:41

aliasm2kaliasm2kaliasm2k

8536 Huy hiệu bạc12 Huy hiệu đồng6 silver badges12 bronze badges

1

  1. Qua JSON [API REST]. Đó là kiến ​​trúc định hướng dịch vụ. Vì vậy, bạn rất có thể mở rộng quy mô ứng dụng của bạn.
  2. Trên hàng đợi tin nhắn cũng có thể mở rộng, nhưng nó không đáng tin cậy lắm.

Samlev

5.7221 Huy hiệu vàng25 Huy hiệu bạc37 Huy hiệu đồng1 gold badge25 silver badges37 bronze badges

Đã trả lời ngày 21 tháng 12 năm 2015 lúc 15:44Dec 21, 2015 at 15:44

Erwinerwinmrvol

3.2492 Huy hiệu vàng15 Huy hiệu bạc22 Huy hiệu đồng16 silver badges19 bronze badges

2

Mạng Python

Mạng là một lĩnh vực lớn, vì vậy chúng tôi sẽ tuân thủ khái niệm cấp độ quan trọng cho lập trình. Đây về cơ bản là phần giới thiệu của người mới bắt đầu để kết nối mạng. Tôi đam mê bảo mật và khi tôi đang đọc và xem video, tôi quyết định viết và chia sẻ điều này. Vì vậy, mạng về cơ bản là khái niệm giao tiếp trên mạng, có thể là máy khách đến khách hàng, máy khách đến máy chủ hoặc thậm chí là khách hàng với chính nó.
So, networking is basically the concept of communicating across a network, be it client to client, client to server or even client to itself.

  • Khách hàng là một thiết bị kết thúc giao thoa với con người
  • Mặt khác, một máy chủ là một thiết bị cung cấp dịch vụ cho khách hàng.

Vì chúng ta đã biết về mạng và nó thực sự là gì. Vì vậy, chúng tôi sẽ đi đến hai mô hình mạng chính.

Mô hình mạng

  • Mô hình máy khách/máy chủ

Mô hình đầu tiên là mô hình máy khách/máy chủ. Đây là phương pháp phổ biến nhất trong đó chủ yếu là máy khách là trình duyệt web và máy chủ giống như Google cung cấp một trang web để chúng tôi thực sự có thể tìm kiếm bất cứ khi nào chúng tôi muốn [yêu cầu từ máy khách và phản hồi từ máy chủ].

  • Mô hình ngang hàng/ngang hàng

Mô hình mạng khác là mô hình ngang hàng sang trọng, phức tạp hơn để thiết lập và nó hữu ích hơn cho phần mềm không phải liên tục có sẵn hoặc kết nối riêng tư hơn. Một ví dụ về cái này như Google Hangouts. Không ai muốn giọng nói của họ đi đến một máy chủ trước khi nó đến với bạn của họ. Bằng cách này, máy khách hoạt động như cả máy chủ và máy khách do đó ngang hàng.

Một số thuật ngữ trong mạng mà bạn có thể muốn biết bao gồm các địa chỉ và cổng. >> Tất cả các máy tính được kết nối với mạng, nên có liên kết mã được phân tách bằng các dấu chấm, ví dụ: 127.0.0.1. Đây được gọi là địa chỉ và định danh duy nhất của kết nối trong mạng. Các cổng từ 1 bóng1024 được bảo tồn cho các giao thức lõi trong khi phần còn lại nằm trong khoảng từ 1025 .655535.
>> All computers that are connected to a network, should have codes link separated by dots e.g. 127.0.0.1. This is known as an addresses and a unique identifier of a connection in the network.
>> Ports on the other hand are the ones that come after the address and are separated by a colon from the address. Ports from 1–1024 are preserved for core protocols while the rest range from 1025–65535.

Các ổ cắm trong mạng là các bản tóm tắt lập trình cho các kết nối. Họ cho phép chúng tôi giao tiếp một cách hai chiều. Sau khi kết nối, chúng ta có thể sử dụng chúng để gửi và truyền dữ liệu. Họ thực hiện các giao thức vận chuyển phổ biến, TCP và UDP.

Một đối tượng ổ cắm được tạo với hai tham số, tham số AF_Inet cho biết chúng tôi sẽ sử dụng địa chỉ IPv4 tiêu chuẩn hoặc tên máy chủ và sock_stream [cho máy khách TCP]/sock_dgram [dành cho máy khách UDP]. Sau đó, chúng tôi kết nối máy khách với máy chủ và gửi một số dữ liệu. Bước cuối cùng là nhận lại một số dữ liệu và in ra phản hồi.

Đây là hình thức đơn giản nhất của máy khách TCP và máy chủ TCP.

Nếu bạn là một pen-tester và làm việc trong giới hạn của các môi trường doanh nghiệp lớn, đã có vô số lần trong các thử nghiệm thâm nhập mà bạn cần phải làm các nhiệm vụ khác. Học cách viết kịch bản và thay thế công cụ của riêng bạn thực sự có thể có ích như một nhà vệ sinh công cộng trên đường phố.

Các kết nối TCP sử dụng giao thức dựa trên kết nối đáng tin cậy. Một kết nối được hình thành giữa hai thiết bị và giữ cho nó hoạt động cho đến khi nó được đóng lại. Nếu một phần dữ liệu bị mất theo cách của nó thông qua Internet, giao thức sẽ tổ chức dữ liệu để phẫn nộ. Điều này chậm hơn các giao thức khác do nhiều kiểm tra và do đó được sử dụng trong các chương trình phải có tất cả dữ liệu đến như trình duyệt web.

UDP

Điều này là viết tắt của giao thức Datagram người dùng, một giao thức dựa trên không có kết nối không đáng tin cậy. Điều này có nghĩa là nó không bao giờ thực sự đảm bảo kết nối với thiết bị khác, nó chỉ gửi dữ liệu đến một địa chỉ cho dù có kết nối hay không. Điều này là không đáng tin cậy vì chúng tôi không bao giờ chắc chắn liệu dữ liệu sẽ được nhận hay không, nếu nó bị mất điều đó mãi mãi. Tuy nhiên, điều này làm cho nó rất nhanh vì nó không liên tục hoặc tiếp tục kiểm tra dữ liệu mọi lúc. Chủ yếu hữu ích cho phần mềm như trò chơi video trực tuyến và phát trực tuyến.unreliable connection-less based protocol. This means that it never actually ensures connection with the other device, it just sends data to an address whether there is a connection or not. This is unreliable since we are never sure whether the data will be received or not, if it’s lost that’s forever. This however makes it very fast since it doesn’t resend or keeps checking on the data all the time. Mainly useful for software like Online video games and streaming.

Hy vọng tôi đã giúp ai đó ra ngoài hoặc giúp ai đó vượt qua thời gian trong khi đọc nó. Nếu vậy, hãy để lại nhận xét về những gì bạn nghĩ về điều này hoặc đăng bất kỳ câu hỏi nào bạn có.

Bài Viết Liên Quan

Chủ Đề