Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2015, 11:13   #11
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Передавайте пакеты не как строку, а как поток (TMemoryStream). Ещё советую попробовать вместо ClientSocket TWSocket от Overbyte. Там приём пакетов организован значительно проще. Не нужно вручную склеивать отдельные пакеты.
я не передавать а принимать данные пытаюсь. Которые мне отправляет сервер, это типа ретрансляция настроена. Разве я принимаю как строку? Это у них там так организовано что ж теперь поделаешь. За компонент спасибо гляну. Я тут уже подумываю что всё приплыл я походу на самом самом последнем этапе. Капец нервотрепка дурная. Поиздиваться решили разработчики "открытого протокола".
Некоторые пакеты кстати по их схеме расшифровываются без проблем. А остальные видимо специально зашифрованы, не знаю от чего только.
Antony41 вне форума Ответить с цитированием
Старый 08.01.2015, 12:06   #12
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

1. Забудь асинхонный режим... делай ThreadBlocking и тогда все вопросы отпадут...
2. Давай проект, а то с нуля долго кодить, и быстрее помогут
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 08.01.2015, 15:21   #13
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
1. Забудь асинхонный режим... делай ThreadBlocking и тогда все вопросы отпадут...
2. Давай проект, а то с нуля долго кодить, и быстрее помогут
За совет спасибо
боюсь проект уже слишком велик, проще процедуру обработки пакета скину, она конено еще не дописана, но вот и не дописана потому что не знаю как это поле Data расшифровать, точнее знаю, но не получается... нет опять не так, получается, но походу передающая сторона что то шифрует, уже задал вопрос на сайте разработчиков протокола, но ответят они скорее всего после праздников

Вот процедура обработки пакета
Снова это сообщение форума "Вы ввели слишком длинный текст (10611 символов). Пожалуйста, сократите его до 5000 символов"? что за ограничение прям бесит уже модеры, админы WTF? у вас дискового пространства для большого текста не хватает? да у меня функция не лезет даже что за издевательство!!!!
Функция во вложении...
Вложения
Тип файла: txt ProcessingData(Data array of byte).txt (12.9 Кб, 155 просмотров)

Последний раз редактировалось Antony41; 08.01.2015 в 15:40.
Antony41 вне форума Ответить с цитированием
Старый 08.01.2015, 15:46   #14
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
что за ограничение прям бесит уже модеры, админы WTF?
Вы вначале разберитесь, для чего ставят такие ограничения, а потом глаза округляйте. Поверьте, это сделано не просто так, чтоб было.
По поводу кода, если что, могу помочь дописать/переписать под нормальные компоненты на финансовой основе. Это если ни кто просто так не поможет.
WinCoder вне форума Ответить с цитированием
Старый 08.01.2015, 17:07   #15
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Плайном не красиво спостилось... прилагаю архив
Вложения
Тип файла: zip Протокол ScoutOpen.zip (3.5 Кб, 10 просмотров)
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 08.01.2015 в 17:23.
Slym вне форума Ответить с цитированием
Старый 08.01.2015, 18:18   #16
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Вы вначале разберитесь, для чего ставят такие ограничения, а потом глаза округляйте. Поверьте, это сделано не просто так, чтоб было.
По поводу кода, если что, могу помочь дописать/переписать под нормальные компоненты на финансовой основе. Это если ни кто просто так не поможет.
спасибо буду иметь в виду

Slym отдельное спасибо тебе за приведенный грамотный пример, но бинарные данные всё же есть похоже и как сказал WinCoder скорее всего это не просто так.
Кстати с некоторыми моментами ты мне в своем примере помог разобраться например с DataLenLo и DatalenHi.
Я задал вопрос разработчикам. Что ответят специалисты тех поддержки отвечу тут.

Последний раз редактировалось Stilet; 25.01.2015 в 10:47.
Antony41 вне форума Ответить с цитированием
Старый 09.01.2015, 07:35   #17
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

значед перед
HexToBin(PChar(DataRaw),PChar(DataD ecoded),Length(DataRaw));
думаю вероятно достаточно проверить первый байт (можно все проверить)
чтобы был меньше 30 ord(#30) - это минимальный HEX символ 0
в первом посте дата почти полностью из нулей состоит #30

Код:
RecvBufFully(DataRaw[1],Length(DataRaw));
if ord(DataRaw[1])<30 then//DeHex
  DataDecoded:=DataRaw
else
begin
  SetLength(DataDecoded,Length(DataRaw) div 2);
  HexToBin(PChar(DataRaw),PChar(DataDecoded),Length(DataRaw));
end;
ПС...
В моем примере желательно инициализировать/обнулять поля пакета, или ветвлениях на else их обнулять, а то мало ли
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 09.01.2015 в 07:46.
Slym вне форума Ответить с цитированием
Старый 25.01.2015, 10:29   #18
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

С зашифрованными данными мне тех поддержка подсказала. разобрался. Теперь всё хорошо. Но вот ни как не могу понять как расшифровать время в описании сказано вот что:
Цитата:
Datetime – время в формате dotnet. Один такт соответствует 100 наносекундам или одной десятимиллионной секунды. Значение данного свойства представляет количество 100-наносекундных интервалов, которые прошли с полночи 00:00:00, 1 января 0001, что соответствует значению DateTime.MinValue.
Цитата:
Описание типа .NET DateTime.Ticks (long)
Один такт соответствует 100 наносекундам или одной десятимиллионной секунды. В миллисекунде 10 000 тактов. Значение данного свойства представляет количество 100-наносекундных интервалов, которые прошли с полночи 00:00:00, 1 января 0001, что соответствует значению DateTime.MinValue.

// перевод времени в Unix
long unixTimeStamp = (DateTime.Ticks - 621355968000000000) / 10000000;
Уже по всякому пробовал не могу понять написал вот такой код
Код:
var
  B: array [0..7] of Byte;
  ft: TFileTime;
  st: TSystemTime;
  dt: TDateTime;
  ut: Int64;
begin
  //00 D1 32 68 12 35 04 3B  - ERROR
  //00 25 EF 55 EA 02 D2 08 - 20.01.2015 17:04:50
  //00 EC 77 C2 7B F6 D1 08 - 04.01.2015 21:23:04
   B[0] := $00;
   B[1] := $ec;
   B[2] := $77;
   B[3] := $c2;
   B[4] := $7b;
   B[5] := $f6;
   B[6] := $d1;
   B[7] := $08;

   ft := TFileTime(PFileTime(@B)^);

   FileTimeToSystemTime(ft, st);
   dt := SystemTimeToDateTime(st);
   dt := IncYear(dt, -1600);
   ShowMessage(DateTimeToStr(dt));
Но иногда дату распознает иногда нет
например вот распознает 00 25 EF 55 EA 02 D2 08 - 20.01.2015 17:04:50
а вот эту нет 00 D1 32 68 12 35 04 3B - ERROR
помогите преобразовать.

Вот доп. описание на msdn
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx

Последний раз редактировалось Stilet; 25.01.2015 в 10:50.
Antony41 вне форума Ответить с цитированием
Старый 25.01.2015, 12:13   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

последний и предпоследний байты:
08 Ax - где-то с 1970-го
08 Fx - ~ 2056
что за год 3B? Он просто не впишется в 4-значный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2015, 12:42   #20
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

а по подробнее если не сложно. Я вобще парвильно преобразование делаю?
Antony41 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с протоколом ModBus (C++) Olegvarmy Помощь студентам 21 19.09.2017 23:22
Delphi работа с протоколом sla va-1 Работа с сетью в Delphi 1 07.05.2014 11:48
Работа с протоколом SIP в С++ Mazorrmo Общие вопросы C/C++ 1 21.09.2008 22:21
Работа с протоколом GameSpy Shouldercannon Работа с сетью в Delphi 8 08.03.2008 12:51
Работа с чужим приложением ERASERROR Win Api 2 28.01.2008 15:22