Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Вниз

TServerSocket: Read error 998, Неверная попытка доступа к адресу   Найти похожие ветки 

 
Ihor Osov'yak   (2003-01-25 00:53) [0]

Довольно редко, но возникает...
Сокет в stThreadBlocking, чтение в потоке, созданном в SrvSocketGetThread,
код для чтения прост до безобразия, привожу, хотя вряд-ли там ошибка:



procedure TServerThread.ClientExecute;

const buffLen = 64;
var
Buffer, strIn,nextIn: string;

nRead: Integer;

...

try
Stream := TWinSocketStream.Create(ClientSocket, 180000);
try

s:=strServiceHello+strVers+" protocol="+strProtVers
+" IdSeans="+IntToStr(fID)+" Key=2"#13#10;
Stream.Write(s[1],length(s));

nextIn:="";
while not Terminated and ClientSocket.Connected do
begin
Buffer := "";
strIn := nextIn;
nextIn := "";
try
SetLength(Buffer, buffLen);
repeat
nRead := Stream.Read(Buffer[1], buffLen);

....

except
on E:Exception do Log(2,"Except in ClientThread. ID="+IntToStr(fID)
+" "+E.Message);
end;




Приложение оформлено как сервис, общаюсь с ним пока через телнет в пределах локального хоста...

... Кто чего умного может подсказать по поводу этого 998.
... Я чего-то не верю, что SetLength(Buffer, buffLen); может память не выделить... Или все же перейти к старому, доброму ShortString для Buffer? Как минимум, меньше будет дерганий для выделения памяти под строку...

Зы. Ошибка может и несколько часов не появлятся, а может раза два за 15 минут ...


 
ole   (2003-01-27 04:47) [1]

Насколько я помню такая ошибка происходит в случае незавершения thread"а по окончанию сеанса связи. Он продолжает считывать какие-либо данные из соединения, которое уже не существует, что и генерит эксцепшин... Попробуй уменьшить таймауты. Поставь больше проверок на наличие соединения. т.е. перед каждым чтением проверяй Connected. и читай в Try except end; по эксцепту завершай трид...


 
Ihor Osov'yak   (2003-01-28 12:05) [2]

> ole © (27.01.03 04:47)

Да нет, сеанс тогда еще активен.
> читай в Try except end; по эксцепту завершай трид...

так и делаю.

Зы, ошибка возникает тогда, когда общаюсь с сервисом через телнет. При работе реальной клиентской программы (там также блокирующий режим в отдельном потоке) - таких проблем нет ... Правда, одна оговорка - реальный режим работы - соединение активно только несколько секунб, возможно несколько десятков, если канал плохой, телнетом вишу как правило несколько десятков минут ...

Зы2 - если я правильно понял - то это можно интерпритировать как нормальное поведение для случая разрива сеанса по каким-то внешним причинам?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-54032
romzes17
2003-03-04 23:22
2003.03.17
Формулы


3-53840
BreakPoint
2003-02-21 11:47
2003.03.17
Delphi7 и Transact Sql


1-54095
Sever
2003-03-05 16:41
2003.03.17
TStringList и динамический массив


6-54144
diks
2003-01-29 11:28
2003.03.17
Отключение клавишь на WebBrowser


3-53878
BubbleGum
2003-02-22 17:19
2003.03.17
External File





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский