#Весь код взят из интернета. Я наговнокодил в него только цикл for

import asyncio
import concurrent.futures

answerAL = "#AL#1\r\n"
answerAD = "#AD#1\r\n"

@asyncio.coroutine
def handle_connection(reader, writer):
    peername = writer.get_extra_info('peername')
    while True:
        try:
            data = yield from asyncio.wait_for(reader.readline(), timeout=100.0)
            if data: 

                for i in str(data): #Проверяю входящую строку посимвольно
                    
                    if i == 'L': #Если там есть L, то клиенту нужно отправить подтверждение авторизации
                         writer.write(answerAL.encode())
                         print('Data = ' + str(data))
                         break
                         

                    if i == 'D': #Если там есть D, то клиенту нужно отправить подтверждение получения данных 
                         writer.write(answerAD.encode())
                         print('Data = ' + str(data))
            else:
                print('Connection closed by peer')
                break
        except concurrent.futures.TimeoutError:
            print('Connection from closed by timeout')
            
            break
    writer.close()

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    server_gen = asyncio.start_server(handle_connection, port=1234)
    server = loop.run_until_complete(server_gen)
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass # Press Ctrl+C to stop
    finally:
        server.close()
        loop.close()