Вверх ↑
Этот топик читают: Гость
Ответов: 19
Рейтинг: 0
#1: 2011-02-26 20:24:44 ЛС | профиль | цитата
Прошу всех,кто может,помогите горю!Очень важно!



карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 397
Рейтинг: 34
#2: 2011-02-26 20:27:24 ЛС | профиль | цитата
Помогаю...
Помог?
карма: 0

0
Ответов: 19
Рейтинг: 0
#3: 2011-02-26 20:52:55 ЛС | профиль | цитата
Привожу часть кода.Суть в том,что по приёму в порт сервера одновременно приходит до 1500 сообщений вида

------------ Дoбавленo в 20.30:
Блин!У меня никак не хочет постить!!Второй день мучаюсь,поэтому привожу частями...5 мин...
------------ Дoбавленo в 20.30:
000000001;20110225193405;901;100000003


------------ Дoбавленo в 20.31:
Мне необходимо перебирать строку,чтобы отделить сообщение от сообщения.
------------ Дoбавленo в 20.32:
Но почему-то не только максимальное количество частей строки 206(205 в первый раз),

------------ Дoбавленo в 20.33:
но и при этом ещё последняя часть "рвётся" на 206 и 1.....Ничего понять не могу!!
------------ Дoбавленo в 20.34:
Может что-то в исходнике нужно поменять?Для наглядности происходящего прикрепляю файл с логом...

------------ Дoбавленo в 20.36:
Помогите пожалуйста!!!..Прошу простить за оффтоп,но почему на этот форум больше 1 строки в пост не лезет?!
------------ Дoбавленo в 20.37:
я даже код не могу залить! уже с шестого компа и с третьего провайдера(((
------------ Дoбавленo в 20.44:

Add(MainForm,2953706,259,175)

[size=9][color=gray]------------ Дoбавленo в 20.45:[/color][/size]
{
link(onCreate,4260031:doOpen,[(327,195)(327,174)])
}

[size=9][color=gray]------------ Дoбавленo в 20.46:[/color][/size]
Add(TCP_Server,4260031,364,168)
{
Point(onServerConnect)
Point(onServerDisconnect)
link(onRead,4204686:doEnum,[(426,174)(426,160)])
link(Port,11110897:Text,[(377,155)(333,155)])
}
[size=9][color=gray]------------ Дoбавленo в 20.47:[/color][/size]
Add(Edit,11110897,327,117)
{
Left=335
Top=45
Width=90
Text="11256"
Alignment=2
DataType=2
}
[size=9][color=gray]------------ Дoбавленo в 20.47:[/color][/size]
Add(Str_Enum,4204686,455,154)
{
Delimiter="
"
link(onEnum,12193659:doString,[(527,160)(527,356)])
}
Add(FormatStr,12193659,567,350)
{
Mask="Part%1 -> %2"
Point(FString)
link(onFString,3679717:doAdd,[(726,356)(726,209)])
link(Str1,4204686:NumSubStr,[(573,329)(461,329)])
link(Str2,4204686:Part,[(580,321)(468,321)])
}
[size=9][color=gray]------------ Дoбавленo в 20.48:[/color][/size]
Add(RichEdit,3679717,805,203)
{
Left=35
Top=310
Width=400
Height=230
ScrollBars=3
link(Str,12193659:FString,[(811,191)(692,191)(692,394)(573,394)])
}
------------ Дoбавленo в 20.49:
привожу только проблемные куски лога:

------------ Дoбавленo в 20.50:
........
Part200 -> 000012975;20110225192513;901;100000200
Part204 -> 000012979;20110225192513;901;100000204
Part205 -> 000012980;20110225192513;901;100
Part1 -> 000205
Part2 -> 000012981;20110225192513;901;100000206
.......
------------ Дoбавленo в 20.51:
.......
Part205 -> 000013184;20110225192515;901;100000409
Part206 -> 000013185;20110225192515
Part1 -> ;901;100000410
Part2 -> 000013186;20110225192515;901;100000411
...........
------------ Дoбавленo в 20.51:
...........
Part205 -> 000013389;20110225192517;901;100000614
Part206 -> 000013390;201102
Part1 -> 25192517;901;100000615
Part2 -> 000013391;20110225192517;901;100000616
.........
------------ Дoбавленo в 20.52:
Причём после закрытия программы выдаёт:
runtime error 216 at $004224a8
------------ Дoбавленo в 20.52:
Может рантайм еррор и по другому поводу,но на всякий случай..
карма: 0

0
Ответов: 301
Рейтинг: 11
#4: 2011-02-26 23:05:26 ЛС | профиль | цитата
code_22704.txt
по удалял лишнее и облагородил.
карма: 0

0
файлы: 1code_22704.txt [860B] [524]
Ответов: 16884
Рейтинг: 1239
#5: 2011-02-26 23:11:48 ЛС | профиль | цитата
Ну и при чем здесь Str_Enum Оно там вообще лишнее
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 19
Рейтинг: 0
#6: 2011-02-26 23:19:43 ЛС | профиль | цитата
evgenyatam писал(а):
по удалял лишнее и облагородил.


------------ Дoбавленo в 23.19:
Спасибо большое!Так и не понятно,почему я не смог самостоятельно этого сделать.Что за глюк такой?Может тут
------------ Дoбавленo в 23.19:
ограничения на длину сообщения для новичков есть?

------------ Дoбавленo в 23.19:
Жаль,что никто пока ничего не предложил..Вопрос для меня очень важный..Очень...
карма: 0

0
Ответов: 301
Рейтинг: 11
#7: 2011-02-26 23:23:21 ЛС | профиль | цитата
лишнее в смысле комментариев форума. а так схема принципиально не менялось
------------ Дoбавленo в 23.23:
Provodnik писал(а):
ограничения на длину сообщения для новичков есть?

нету. просто у некоторых форум нормально отправляет, у некоторых - замедленно. и у совсем несчастных - тормозит безбожно.
карма: 0

0
Ответов: 19
Рейтинг: 0
#8: 2011-02-26 23:33:01 ЛС | профиль | цитата
Почему?Без него-никак!!!Поймите,это только мизерная часть кода!!!И эта часть отображает глюк.Если приводить
------------ Дoбавленo в 23.25:
всю схему,то станет понятно,что в дальнейшем это сообщение разбивается на части и помещается в SQL.И то,что
------------ Дoбавленo в 23.25:
если не делать перебор,в редакторе текста новая строка всё равно сама поставится,но при этом дальнейшее
------------ Дoбавленo в 23.25:
деление сообщения на части будет некорректным,
------------ Дoбавленo в 23.25:
т.к сообщения не всегда одинаковы по количеству составляющих.
------------ Дoбавленo в 23.32:
evgenyatam писал(а):
нету. просто у некоторых форум нормально отправляет, у некоторых - замедленно. и у совсем
------------ Дoбавленo в 23.32:
несчастных - тормозит безбожно.


------------ Дoбавленo в 23.32:
И это при 6 мегабит в секунду дома,24-х мегабитах на работе,при вариантах ХР-шки с сервис-паками 2 и 3,7-ки
------------ Дoбавленo в 23.32:
ультимейт и профешнл,браузеров Оперы,Макстона,Эксплорера,Файерфокса в различных сочетаниях с ОСью,после
------------ Дoбавленo в 23.32:
переустановок Явы...Ну ладно,на работе на прокси местный грешил...А дома-то чего???До сих пор по строчке пишу((((
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#9: 2011-02-26 23:49:53 ЛС | профиль | цитата
Provodnik, судя по всему лог должен выглядеть так:
Part200 -> 000012975;20110225192513;901;100000200
Part204 -> 000012979;20110225192513;901;100000204
Part205 -> 000012980;20110225192513;901;100000205
Part2 -> 000012981;20110225192513;901;100000206
Part205 -> 000013184;20110225192515;901;100000409
Part206 -> 000013185;20110225192515;901;100000410
Part2 -> 000013186;20110225192515;901;100000411
Part205 -> 000013389;20110225192517;901;100000614
Part206 -> 000013390;20110225192517;901;100000615
Part2 -> 000013391;20110225192517;901;100000616

правильно ?

Почему он рвется? StrEnum тут совершенно не при чем.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2011-02-26 23:56:32 ЛС | профиль | цитата
Tad писал(а):
Почему он рвется?

Если лог передается одним файлом, то проблема, скорее всего, в размере TCP окна, после достижения предела которого, соединение считается уже следующей сессией
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#11: 2011-02-27 00:00:54 ЛС | профиль | цитата
Вот я и говорю, что в результате получится вот такая схемка :
code_22706.txt
без StrEnum.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_22706.txt [1.2KB] [436]
Ответов: 19
Рейтинг: 0
#12: 2011-02-27 00:07:24 ЛС | профиль | цитата
Tad писал(а):
правильно ?
Почему он рвется? StrEnum тут совершенно не при чем.


------------ Дoбавленo в 00.05:
Почти правильно...Часть 2 должна быть 1,а 206 правильно.Если енум тут не при чём,то в чём же дело?До 205

------------ Дoбавленo в 00.06:
сообщений всё нормально передаётся..

------------ Дoбавленo в 00.06:
nesco писал(а):
Если лог передается одним файлом, то проблема, скорее всего, в размере TCP окна, после
------------ Дoбавленo в 00.06:
достижения предела которого, соединение считается уже следующей сессией


------------ Дoбавленo в 00.06:
Вы не могли бы поподробнее?Как можно увеличить это окно в хиасме?Или Вы считаете,что клиент,передающий 1500
------------ Дoбавленo в 00.06:
сообщений за раз,косячит из-за того,что в нём плохо настроено то самое окно?Я программёр
------------ Дoбавленo в 00.07:
посредственный,поэтому прошу растолковать пожалуйста.Пока мой удел-язык Си для WinCC,да SQL...
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#13: 2011-02-27 00:13:49 ЛС | профиль | цитата
Provodnik, это может быть и не окно, а что-то еще. К примеру, такое я наблюдал у одного сотового провайдера, он накапливал различные мои сообщения до определенного порога, и затем он рвал сессию, разбивая мое последнее сообщение и приклеивая остаток к следующей порции данных.
Средствами HiAsm-a изменить параметры провайдеров не получится, тут надо использовать специальные изощрения, типа буфера накопления из которого вытаскивать кратные данные, а некратные оставлять, и дальнейшее накопление приклеивать к оставшимся данным. Это мысли вслух, и только предположение.
карма: 22

0
Ответов: 19
Рейтинг: 0
#14: 2011-02-27 00:20:41 ЛС | профиль | цитата
Tad писал(а):
без StrEnum.


------------ Дoбавленo в 00.19:
Боюсь,что Вы недопоняли цели и задачи...В вашей схеме я не вижу сервер или что-то подобное.Кроме того,вы
------------ Дoбавленo в 00.19:
преобразуете то,что я показал только для наглядности!!!Само сообщение,приходящее в порт я описал ДО лога.Лог
------------ Дoбавленo в 00.19:
для того,чтобы понять,что на самом деле происходит!!!Формат сообщения,приходящего в порт

------------ Дoбавленo в 00.19:
000000001;20110225193405;901;100000003


------------ Дoбавленo в 00.19:
И мне нужно перебором отделить сообщение от сообщения(разделитель
),потом поделить сообщение на части
------------ Дoбавленo в 00.19:
(разделитель уже ; 000000001-номер сообщения клиента,20110225193405-дата и время,901-тип,100000003-номер
------------ Дoбавленo в 00.20:
сообщения сервера) и потом эти части использовать.Лог-ДЛЯ ДИАГНОСТИКИ!!!!

------------ Дoбавленo в 00.20:
Мне схему всю здесь выложить очень сложно,поэтому если не затрудню,можно Ваш мейл или асю?!
------------ Дoбавленo в 00.20:
Скину,тогда может быть будет более понятно..
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#15: 2011-02-27 00:21:46 ЛС | профиль | цитата
Provodnik, могу посоветовать проверять валидность длины посылки, если она не кратная дождаться следующей части, но это все надо делать через буфер приема
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)