![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Корректное завершение работы TIdTCServer [D7, WinXP]
PonosetcDM © (2010-09-07 11:08:00)Здраствуйте, уважаемые господа!
У меня такой вопрос: Есть клиентское и серверное приложения, использую Indy 10, вопрос: после того, как клиент установил соединение с сервером, я, спустя некоторое время хочу закрыть серверное приложение, закрывается с Exception'ом но это не важно(наверно)... после этого, запускаю серверное приложение опять, а мне сообщается, что "Error - Could not bind socket. Address and Port already in use"
как с этим бороться помогите плиз....
Сергей М. (2010-09-07 13:24:00) [1]
> он в цикл не заходит
Кто "он" ?
В какой цикл ?
> for i:= 1to tlst.Count -1 do
Единица-то с какого перепугу тут ?
Anatoly Podgoretsky (2010-09-07 12:54:00) [2]> PonosetcDM (07.09.2010 11:30:04) [4]
Вот для того что бы этого не было.
А ты что сюда за советом пришел или препираться, если за первым, то марш
исполнять.
PonosetcDM (2010-09-07 12:23:00) [3]Удалено модератором
PonosetcDM (2010-09-07 11:59:00) [4]Хотелось бы услышать мнение Сергея М. по этому вопросу.
PonosetcDM (2010-09-07 11:30:00) [5]причем сдесь try finally, если я просто перезапускаю программу? и там вываливается ошибка что "Could not bind socket. Address and Port are already in use". Смысл в том, что он в цикл не заходит, кстати, хотя соединение с этим сервером активно...
Anatoly Podgoretsky (2010-09-07 11:26:00) [6]> PonosetcDM (07.09.2010 11:08:00) [0]
Надо использовать try finally
PonosetcDM (2010-09-07 11:11:00) [7]Если даже клиент сделает дисконнект, то все равно тоже самое "Error - Could not bind socket. Address and Port already in use", можеь быть есть определенный интервал времени, который необходимо выждать?
PonosetcDM (2010-09-07 11:09:00) [8]закрываю приложение следующим образом:
try
tlst := SFrmMain.IdTCPServer1.Contexts.LockList;
for i:= 1 to tlst.Count -1 do
TIdContext(tlst.Items[i]).Connection.Disconnect;
finally
SFrmMain.IdTCPServer1.Contexts.UnlockList;
end;
SFrmMain.IdTCPServer1.Active := false;
SFrmMain.Close;