Python клиент и сервер? - PullRequest
       9

Python клиент и сервер?

0 голосов
/ 30 сентября 2019

Я пытаюсь построить сервер и клиент, один сервер и около 100 клиентов, и его можно увеличить, поэтому клиенты будут читать базу данных и извлекать из нее строки, а затем каждый клиент будет отправлять на сервер, используя цикл forиспользуя функцию range (), чтобы узнать, сколько строк клиент выбрал из таблицы базы данных, и он будет посылать каждую строку на сервер одну за другой.

мне нужны примеры кодов для решения этой проблемы, и что будет лучшимрешение для этого.

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

Вот функция для серверной стороны, которая слушает и запускает поток

    def start_server(self):
        host = host_1
        port = port_1       # arbitrary non-privileged port
        max_buffer_size = 16000

        soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)   # SO_REUSEADDR flag tells the kernel to reuse a local socket in TIME_WAIT state, without waiting for its natural timeout to expire
        print("Socket created")

        try:
            soc.bind((host, port))
        except:
            print("Bind failed. Error : " + str(sys.exc_info()))
            sys.exit()

        soc.listen(100)       # queue up to 100 requests
        print("Socket now listening")

        # infinite loop- do not reset for every requests
        while True:
            global connection

            connection, address = soc.accept()
            ip, port = str(address[0]), str(address[1])
            print("Connected with " + ip + ":" + port)


            try:
                Thread(target=Myobj.client_thread, args=(connection, ip, port,max_buffer_size)).start()
            except:
                print("Thread did not start.")
                traceback.print_exc()

        soc.close()

Вот функция на стороне клиента, которая вызывается циклом for на каждой итерации для отправки данных на сервер


def send_server(table_rows):

    clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientSocket.settimeout(5)

    connected = False

    host_1 = host
    port_1 = port

    initial_ip = 1

    if initial_ip == 1:
        print("value of previous initial ip = "+str(initial_ip))
        host = host_1
        port = port_1
        initial_ip = 

    try:

        clientSocket.connect( ( host, port ) )
        print("Connected to server")

        connected = True
    except (socket.error) as serr:
        .................
        connected == False


    print("Value of connected = "+str(connected))
    if connected == True:
        try:

           data = pickle.dumps(sock_list,protocol=2)

           clientSocket.send((data))
           print("Data sent to server")
           return 0 


        except (socket.error, serial.SerialException) as serr:
            #raise serr



    else:
        print("Server connection failed!")

    clientSocket.close();


    sys.stdout.flush()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...