Форум: "Сети";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизПроблема с блок. сокетами!!!! Найти похожие ветки
← →
SidDN (2003-09-10 17:29) [40]> Verg
Можно по-подробнее...
← →
Verg (2003-09-10 17:35) [41]
> Можно по-подробнее...
Там более подробно некуда
Давай лучше поищем "ведьм" :)
> SetLength (TMP, nRead1);
> // Определяем размер данных
> SetLength(s1, StrLen(PChar(TMP))+1);
Объясни в этом куске - чего ты хош? Особенно StrLen - что вернет и почему? Как думаешь?
← →
SidDN (2003-09-10 17:43) [42]В начале пакета идёт его длина в символьном виде, отделённая от пакета #0.
Напр.: "10"#0"1234567890"
В этом коде я выкусываю из пакета его длину:
SetLength(s1, StrLen(PChar(TMP))+1);
StrLCopy(@s1[1], PChar(TMP), Length(s1)-1);
InDataSize:=StrToInt(s1);
Delete(TMP, 1, Length(s1));
В приведённом примере StrLen(PChar(TMP)) вернёт 2.
Помоему все в порядке.
← →
Verg (2003-09-10 18:23) [43]Между запросами серверу сколько проходит время (между первым с нормальным обменом и следующим "с умиранием")?
Они идут подряд?
← →
SidDN (2003-09-10 18:34) [44]Да по разному.Пробовал и подряд, и через время.
Дело в том, что первый запрос нормальным назвать нельзя, т.к. данные то приходят, а поток не убивается, и почему при запросе создаются 5-ть потоков? На рабочей машине создаётся всего один, и оный после отработки грохается.
← →
SidDN (2003-09-10 18:40) [45]А давай я тебе проекты вышлю и ты у себя попробуешь?
← →
Verg (2003-09-11 09:06) [46]Ну, давай.
andruk@mail.ru
Прикольный глюк. Вот только нет у меня XP.
Кстати, клиентскую часть (поток) я вчера гонял. Ничего криминального. Ездил на Nt4 И W2K.
← →
SidDN (2003-09-11 09:50) [47]Послал.
Я уже в своём отделе операционки переставлять на двух машинах начал, может это поможет :)
← →
Verg (2003-09-11 10:53) [48]1. Проверил, работает. Хоть убейся работает. Даже на 98 (подвернулась тут....)
2. Модернизировал часть клиентского кода (извини, перевел на на Паскаль :)), а то "глаз режет") - тоже работает хоть убейся.
вот модернизированный кусок (из клиентской части)
ClientSocket.Socket.SendText(Data); // Посылаем запрос
SetLength(TMP, 65535);
if Stream.WaitForData(30000) then // Ждём ответ
begin
nRead1 := Stream.Read(TMP[1], length(Tmp));
if nRead1 = 0 then exit;
// Определяем размер данных
S1:=pchar(Tmp);
InDataSize:=StrToIntDef(S1,-1);
if InDataSize<=0 then exit;
Data:=Copy(TMP, length(s1)+2, nRead1-length(s1)+2+1);
while length(Data)<InDataSize do // Поучаем остальные
begin
if not Stream.WaitForData(30000) then exit;
nRead := Stream.Read(TMP[1], length(Tmp));
if nRead = 0 then exit;
Data:=Data+Copy(Tmp, 1, nRead);
end;
Synchronize(Show);
end else
begin
// TimeOut
end;
← →
Verg (2003-09-11 10:58) [49]Слушай а на кой там два штука TIdTCPClient? Мусор или перспектива?
← →
SidDN (2003-09-11 11:01) [50]Да это я Инди пробовал, убить забыл.
Наверное глюк в машинах всётаки, щас XP переставлю попробую опять.
Спасибо за помощь!!!
Кстати а ты Инди пробовал?
← →
Verg (2003-09-11 11:01) [51]
> nRead1-length(s1) -2+1
конечно же
← →
Verg (2003-09-11 11:05) [52]
> Кстати а ты Инди пробовал?
Пробовал давно, не понравилось. К тому времени, когда ОНО появилось у меня было уже достаточно наработок с Client/Server сокетами и я решил, что "свои баги ближе к телу" :))
← →
SidDN (2003-09-11 11:28) [53]Слушай, а вышли мне exe-шники клиента и сервера (если не напряжно), может уменя компилер багует, только что пол предприятия оббежал, глючит стабильно!!! :(((
← →
Verg (2003-09-11 11:51) [54]Лови.
Кстати, ты специально отключил оптимизацию и установил выравниване полей=1?
← →
Verg (2003-09-11 11:55) [55]Да, компилировано D6 - UpdatePack2.
← →
Verg (2003-09-11 12:00) [56]И это....,
по-моему ты рискуешь жестко нарваться с выравниванием. У меня, например исходники ScktComp (и не только) лежат в пути компиляции. И я могу с любым выравниванием работать.
Не уверен, но как гипотеза...
← →
SidDN (2003-09-11 12:04) [57]С оптимизацией и выравниванием - это я пробовал, думал может влияет както.
Твои exe-шники тоже глючат :(((((
Кстати на одной машине перебил операционку, начало работать.
Теперь остаётся выяснить в чём был бок.
← →
Verg (2003-09-11 12:08) [58]"А ведь говорил Мослатый Слизняку: держись, дурак, от канав подальше, а то ведь и хоронить нечего будет... " (С) Стругацкие
Это я про XP.
← →
SidDN (2003-09-11 12:15) [59]:))))
Спасибо большое за помощь!
Ну а насчёт XP - мне деваться некуда, надо писать под неё.
Буду разбираться... :(
Страницы: 1 2 вся ветка
Форум: "Сети";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.035 c