Я устанавливаю соединение между 4 устройствами (A, B, C & D) так, чтобы все могли отправлять сообщения друг другу, используя сокеты.
Я попытался использовать идею клиент / сервер. Я сделал устройство A клиентом, так как оно будет инициировать соединение, а другие одновременно и сервером, и клиентом (чтобы они могли отправлять сообщения туда и обратно). Я чувствую, что код для B, C и D должен быть похожим, поскольку они в основном делают одно и то же. Я использовал один и тот же порт между A и B, другой - между B & C ... Я могу отправить сообщение от A до B, затем от B до c и от C до D, но не могу отправить сообщения в обратном направлении
Device A code
*************
import socket
import time
host = socket.gethostname()
port = 8088
s = socket.socket()
s.connect((host, port))
print('Calling...')
time.sleep(2)
ms1_message = input(str('A_State>>'))
while A_message != str('bye'):
s.send(A_message.encode())
B_message = s.recv(30)
B_message = B_message.decode()
print('B sends:>> ', B_message)
Device B code
********
import socket
import time
import sys
from _thread import *
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 8088
try:
s.bind((host, port))
except socket.error:
print('Binding Failed!!!')
sys.exit()
s.listen(4)
print('Listening for connections...')
A, addr = s.accept()
print('A connected')
while True:
recv_message_ms1 = A.recv(30)
if not recv_message_A:
break
print('A sends:>> ', recv_message_A.decode())
message = 'ACK'
message = message.encode()
A.send(message)
time.sleep(3)
print('Searching for C...')
# connection setup to C
s2 = socket.socket()
port2 = 8089
C = socket.gethostname()
s2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s2.connect((C, port2))
print('...Connected with C')
B_message = 'Channel Setup Request...'.encode()
# B_message = B_message.encode()
s2.send(B_message)
Я ожидаю такой результат, как отправка сообщения B на B, B подтверждение сообщения с помощью и ACK обратно на A, и B отправка еще одного сообщения на C, C отправка обратно ACK и отправка сообщений на D, D отправка обратно ACK и происходят обратные сообщения,кто-нибудь может подсказать мне, что делать? NB: только Python