Отправьте сообщение от одного запускающего консольного приложения до другого

Одним из решений является уничтожение уже используемого порта и его повторное использование. Чтобы убить определенный порт в Linux, используйте следующую команду:

sudo fuser -k Port_Number/tcp

Например: В вашем случае это будет выглядеть следующим образом:

sudo fuser -k 98/tcp

Но, чтобы ответить на ваш вопрос, я думаю код ниже поможет вам найти все свободные порт TCP:

from contextlib import closing
import socket

for port in range(1, 8081):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        res = sock.connect_ex(('localhost', port))
        if res == 0:
            print (port)
8
задан Boris Callens 26 January 2009 в 16:39
поделиться

2 ответа

Если все, в чем Вы нуждаетесь, должно уведомить одно приложение, которое другой выполнило его задачу, самый легкий путь состоял бы в том, чтобы использовать именованный EventWaitHandle. Объект создается в его несообщенном состоянии. Первое приложение ожидает на дескрипторе, и второе приложение сигнализирует о дескрипторе, когда это закончило делать свое задание. Например:

// First application
EventWaitHandle waitForSignal = new EventWaitHandle(false, EventResetMode.ManualReset, "MyWaitHandle");

// Here, the first application does whatever initialization it can.
// Then it waits for the handle to be signaled:
// The program will block until somebody signals the handle.
waitForSignal.WaitOne();

Это настраивает первую программу для ожидания синхронизации. Второе приложение одинаково просто:

// Second app
EventWaitHandle doneWithInit = new EventWaitHandle(false, EventResetMode.ManualReset, "MyWaitHandle");

// Here, the second application initializes what it needs to.
// When it's done, it signals the wait handle:
doneWithInit.Set();

Когда второй Набор вызовов приложения, это будет сигнализировать о событии, и первое приложение продолжится.

10
ответ дан 5 December 2019 в 11:28
поделиться

Другие популярные опции для IPC включают:

  • Именованные каналы
  • Дистанционная работа (.NET)
  • WCF

Если Вам только нужна синхронизация, можно рассмотреть a Semaphore, или Mutex объект. Существуют классы, которые существуют в System.Threading пространство имен для.NET, Если Вы создаете названные версии их, затем они относятся к целой машине.

5
ответ дан 5 December 2019 в 11:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: