Найти - Пользователи
Полная версия: Обмен данными с сервером SIOC
Начало » Python для новичков » Обмен данными с сервером SIOC
1
JazzyManSerg
Добрый день, Коллеги !
Столкнулся с полтергейсом )))
Если лень читать текст, хотя бы подскажите, нет ли видимых ошибок в коде
Опишу суть проблемы
На локал хосте есть программка SIOC- Это сервер, который получает от программ симуляторов данные на запрос вида Arn.Inicio:22:25:33:67\r\n выдает значения четырех переменных 22 25 33 67 в виде пакета по 8092 порту. Если симулятор не запущен, то можно в ручном режиме выставить значения переменных и принимать их клиентом.
Пишу клиента, который создает соединение и потом в бесконечном цикле отсылает пакет и получает ответ.
Запускаю сервер, запускаю клиента, пакеты пошли, сервак отвечает. Поменял значения в серваке - клиент их получил. Потом запускаю Симулятор, и сервер начинает получать от него данные (с большой частотой) И ТУТ МОЙ КЛИЕНТ НАЧИНАЕТ ЛАГАТЬ ! Пакет-запрос послал,- ответа нет , потом может прийти а может и не прийти, может ожить на пару минут. а потом опять до посинения ждать ответа И ВСЁ. Если вырубить прием данных сервера, тоесть отключить симулятор - прием восстанавливается. Опытным путем установил, что лаги зависят от количества переменных в запросе, и от того, часто ли меняются переменные в СИОК.
Заранее благодарен всем откликнувшимся! очень NEED HELP
Куда копать не знаю. Может с буферами что- то? Какую в данном случае отладку можно произвести ? Интересует любое мнение
Вот код программы.
 import socket,select
host = "127.0.0.1"    
port = 8092             
data=["Speed","Alt","Course","Data"]
data_ind=["22","25","33","67"]
data_count=4
packet="Arn.Inicio:22:25:33:67\r\n"
ne = socket.socket()    
ne.connect((host, port))
ne.setblocking(0)
print ("Connect to SIOC")
while 1:
 ne.send(bytes(packet))
 d=0
 ResStr=""
 while d==0:
  ready = select.select([ne],[],[],0.1)
  if ready[0]: 
   ResStr+=ne.recv(1)
  else:
   d=1  
 print (ResStr)
ne.close() 
JazzyManSerg
Подскажите, как сделать так что б Python не висел долго на команде send, а периходил к следующим командам?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB