Как изменить мой серверный код python для размещения двух клиентов? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь отправить данные с моего Клиента_1 на Клиента-2. Эта передача должна произойти через серверную программу. Передача данных от Client_1 на сервер прошла успешно, но сервер не может подключиться к Client_2. Обратите внимание, что для моего приложения ** СЕРВЕР ДЕЙСТВУЕТ, КАК ПАССИВНЫЙ ЭЛЕМЕНТ, А НЕ КАК АКТИВНЫЙ ЭЛЕМЕНТ **, т. Е. Сервер не осуществляет активную отправку или передачу каких-либо данных. Он просто действует как мост между Client_1 и Client_2.

Моя проблема заключается в том, как изменить код моего сервера, чтобы я мог соединить оба своих клиента с моим сервером и иметь возможность передавать полученные данные в сервер для клиента_2.

Ниже я прилагаю свой код сервера ::

import socket
#from threading import Thread

def server_program():

    all_connections = []
    all_address = []

    host = socket.gethostname()       ###### get the hostname ###########
    port = 5000                   ##################### initiate port no above 1024 ###############
    server_socket = socket.socket()                 ############# initiate the connection ##########e

    server_socket.bind((host, port))     ############### bind host address and port together ##############

            ############### configure how many client the server can listen simultaneously ################
    server_socket.listen(5)


    #def accepting_connections():
     #   for c in all_connections:
      #      c.close()

    #del all_connections[:]
    #del all_address[:]


    conn, address = server_socket.accept() 
   # socket.setblocking(1)
    all_connections.append(conn)
    all_address.append(address)
    print("Connection from: " + str(address))
    while True:
                                     ################ receive data stream. it won't accept data packet greater than 1024 bytes ###########
        data = conn.recv(1024).decode()
        if not data:
                                        ########### if data is not received break #############
             break
        print("from housekeeping unit: " + str(data))
                # data = input(' -> ')
        conn.send(data.encode())  ########## send data to the client ###########

    conn.close() ############## close the connection ###############


if __name__ == '__main__':
    server_program()

1 Ответ

0 голосов
/ 16 апреля 2020
...