Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 8, 2016 13:51:25

JazzyManSerg
Зарегистрирован: 2016-11-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными с сервером SIOC

Добрый день, Коллеги !
Столкнулся с полтергейсом )))
Если лень читать текст, хотя бы подскажите, нет ли видимых ошибок в коде
Опишу суть проблемы
На локал хосте есть программка 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 (Ноя. 8, 2016 14:32:11)

Офлайн

#2 Ноя. 8, 2016 16:18:09

JazzyManSerg
Зарегистрирован: 2016-11-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обмен данными с сервером SIOC

Подскажите, как сделать так что б Python не висел долго на команде send, а периходил к следующим командам?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version