예제 #1
0
파일: app.py 프로젝트: fkfouri/si-lansab
 def main_loop(self):
     exit_app = False
     srv = Server()
     while not exit_app:
         self.lego = None
         srv.accept()
         while True:
             data = srv.recv()
             logging.info(data)
             if not data:
                 del self.lego
                 break
             elif data == 'start':
                 if not self.lego:
                     self.lego = Lego()
                 if self.lego.idle:
                     thread.start_new_thread(self.start_lego, ())
             elif self.lego and data == 'stop':
                 self.lego.stop()
             elif self.lego and data == 'reset':
                 self.lego.reset()
             elif data == 'exit':
                 exit_app = True
                 del self.lego
                 break
     srv.close()
def main():
    """main"""
    csin_port, csout_port, crin_port, crout_port, sin_port, rin_port, loss_rate = checkCommandArgs(
    )

    #csout socket
    csout = Client(IP, csout_port)
    csout.connect(IP, sin_port)

    #csin socket
    csin = Server(IP, csin_port, BUFFER_SIZE)
    csin.accept()

    #crout socket
    crout = Client(IP, crout_port)
    crout.connect(IP, rin_port)

    #crin socket
    crin = Server(IP, crin_port, BUFFER_SIZE)
    crin.accept()

    left_open = True
    right_open = True
    while left_open or right_open:
        print("selecting")
        ready, _, _ = select.select([csin.connection, crin.connection], [], [])
        for server in ready:
            if server is csin.connection:
                pack = csin.receive()
                if pack == b"":
                    data = pack
                    right_open = False
                else:
                    data = pickle.loads(pack)
                if not packCheck(data, csin, crout, loss_rate):
                    continue
                pack = bitError(pack)
                crout.send(pack)
            elif server is crin.connection:
                pack = crin.receive()
                if pack == b"":
                    data = pack
                    left_open = False
                else:
                    data = pickle.loads(pack)
                if not packCheck(data, crin, csout, loss_rate):
                    continue
                pack = bitError(pack)
                csout.send(pack)
def main():
    """main"""
    expected = 0
    rin_port, rout_port, crin_port, file = checkCommandArgs()

    #rin socket
    rin = Server(IP, rin_port, BUFFER_SIZE)
    rin.accept()

    #rout socket
    rout = Client(IP, rout_port)
    rout.connect(IP, crin_port)

    #opens and creates file
    open_file = File(file)

    while True:
        buf = rin.receive()
        print("recieved")
        pack = pickle.loads(buf)
        print(pack)

        if not packChecker(pack):
            continue
        response = Packet(ACKNOWLEDGMENT_PACKET, pack.seq_no, 0)
        rout.send(pickle.dumps(response))
        print("sent")

        if pack.seq_no == expected:
            expected += 1
        else:
            continue

        if pack.data_len > 0:
            open_file.write(pack.data)
        else:
            break

    open_file.close()
    rout.shutdown()
    rin.close()
    rout.close()
def main():
    """Main"""
    next_no = 0
    exit_flag = False
    sin_port, sout_port, csin_port, file = checkCommandArgs()

    #sin socket
    sin = Server(IP, sin_port, BUFFER_SIZE)
    sin.accept()

    #sout socket
    sout = Client(IP, sout_port)
    sout.connect(IP, csin_port)

    open_file = File(file)
    buffer = PacketBuffer()

    sent = 0

    while (not exit_flag):
        data, data_len = open_file.readBytes()
        pack = Packet(DATA_PACKET, next_no, data_len, data)
        if data_len == 0:
            exit_flag = True
        buffer.onqueue(pack)
        while True:
            sout.send(pickle.dumps(buffer.peek()))
            sent += 1
            if not sin.receiveSecond(next_no):
                print("no responce or incorrect responce")
                continue
            print("response and checked")
            next_no += 1
            buffer.dequeue()
            break
    open_file.close()
    sout.shutdown()
    sin.close()
    sout.close()
    print("sent: " + str(sent))
예제 #5
0
def main():
    server = Server()

    host = input(
        "Type server IP or just press enter to use default (default is {}):".
        format(server.DEFAULT_HOST))
    host = host.strip()  # get rid of whitespaces at the end and beginning
    if host == "":
        host = server.DEFAULT_HOST

    allowed_chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'}
    if not set(host).issubset(allowed_chars) or len(host) < 7 or len(
            host) > 15 or host.count('.') != 3:
        print("Incorrect IP address.")
        server.close_all()
        return

    port = input(
        "Type port number or just press enter to use default (default is {}):".
        format(server.DEFAULT_PORT))

    if port != "":
        try:
            port = int(port)
        except ValueError:
            print("Error: Given input is not a number.")
            server.close_all()
            return
    else:
        port = server.DEFAULT_PORT

    try:
        server.initialize_server(host=host, port=port)
    except socket.error:
        print("Error: Initializing server failed.")

    print("Server is listening...")

    while True:
        try:
            conn, addr = server.accept()
        except socket.error:
            print("Error: Could not establish connection.")
            break

        print("Connection established with address:", addr, end="\n\n")
        server.create_client_thread(conn, addr)
        print("Number of currently connected clients: ", len(server.clients))

    server.close_all()
    print("Server closed.")
예제 #6
0
    def test_send_read(self):
        # запуск эхо-клиента в другом потоке
        client_thread = threading.Thread(target=self.run_fake_client)
        client_thread.start()

        send_msg = 'Hello, World!'

        messenger_server = Server('127.0.0.1', 7777)
        client, add = messenger_server.accept()
        client.send(send_msg.encode('utf-8'))
        recv_msg = client.recv(1024).decode('utf-8')

        assert send_msg == recv_msg

        client.close()
        messenger_server.close()

        client_thread.join()
예제 #7
0
    """
    For debugging, measuring time. After a TicToc object called .tic(), pass the object and
    call this to see how much time since then passed.
    :param timer: TicToc object
    """
    elapsed = timer.tocvalue(restart=True) * 1000
    print(string + ": " + str(int(elapsed)))


if __name__ == "__main__":
    server_discovery = ServerDiscovery(
        discovery_port)  # Starts a new thread with UDP socket.
    server = Server(recv_port, send_port)
    server.bind()
    while True:
        server.accept()
        print(server.client_recv_socket)
        print(server.client_sender_socket)
        while True:
            try:
                data = server.receive().decode()
            except:
                print("bad data")
                continue
            print(data)
            if data == "close":
                server.close_client()
                break
            elif data == "ping":
                server.ping_response()
            elif data == "request_screenshot":
예제 #8
0
        print('Сервер запущен:', server.get_name())
    except OSError as e:
        print('Ошибка запуска:', e.strerror)

    new_clients = {}

    valid_clients = []

    messages_to_send = []

    if server:
        print('Сервер ожидает подключения...')
        try:
            while True:
                try:
                    client_socket, client_address = server.accept()
                except OSError:
                    pass
                else:
                    print('Подключен новый клиент:', client_address)
                    new_clients[client_socket] = time.time()
                finally:
                    current_time = time.time()
                    for client, conn_time in new_clients.copy().items():
                        if current_time - conn_time > _VALIDATION_TIMEOUT:
                            print(
                                'Вышло время вылидации клиента. Клиент отключен:',
                                client.getpeername())
                            new_clients.pop(client)
                            client.close()