import socket
import re
# Задаем адрес сервера
SERVER_ADDRESS = ('localhost', 8686)
# Настраиваем сокет
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(SERVER_ADDRESS)
server_socket.listen(10)
print('server is running, please, press ctrl+c to stop')
# Слушаем запросы
# Особенности протокола
while True:
connection, address = server_socket.accept()
print("new connection from {address}".format(address=address))
# Соединение всегда инициализирует навигатор, через handshake мы должны ему сразу ответить!
# 0x40, 0x4e, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x45, 0x5e,0x2a, 0x3c, 0x53,
# connection.send(bytes('@NTC\x40\x4e\x54\x43\x00\x00\x00\x01\x00\x00\x00\x03\x00\x45\x5e*<S', encoding='UTF-8'))
#Согласование протокола FLEX v1
#protocol answer
#0x40, 0x4e, 0x54, 0x43,0x00,0x00,0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0xb1, 0xa0, 0x2a, 0x3c, 0x46, 0x4c, 0x45, 0x58, 0xb0, 0x0a, 0x0a,
# connection.send(bytes('x40\x4e\x54\x43\x00\x00\x00\x00\x00\x01\x00\x00\x00\x09\x00\xb1\xa0\x2a\x3c\x46\x4c\x45\x58\xb0\x0a\x0a', encoding='UTF-8'))
while 1:
data = connection.recv(8192)
print(data)
results = [
dict(re.findall(r"(\d{4})([\d.]+)", string))
for string in filter(
bool, # non-empty
data.decode('ascii', 'ignore').split("&&"),
)
]
print(data.decode('ascii', 'ignore'))
print(data.decode('cp866'))