Реализовать идентичные копии моей исходной программы на обеих машинах?
Нет, вам нужна клиентская программа и серверная программа.
Как машина A узнает, что она должна отправить запрос на машину
Б, а не на другие машины?
Потому что вы говорите это. Вы должны сообщить клиенту (A), где находится сервер B.
B знает IP-адрес А.
B не нужно знать IP A. Он получит это, когда A соединяется, а не то, что ему это нужно вообще: все, что ему нужно, это соединение, чтобы написать ответ. Это A, который должен знать IP B.
Но меня беспокоит то, как он отправляет запрос только на B.
Потому что вы программируете это таким образом. Я не понимаю вашу озабоченность.
Прямо сейчас, я не беспокоюсь о каких-либо расах между
«клиенты», пока они возвращают статус.
Вы действительно должны разобраться в своей терминологии. Ваши «клиенты» действительно являются серверами и наоборот.