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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2013, 22:09   #1
kostya67
Пользователь
 
Регистрация: 19.06.2013
Сообщений: 49
По умолчанию idtcpclient

Подключился я к серверу. После закрытия сервера ,при проверке на подключение клиент говорит ,что подключен,но сервер та закрыли, в чем причина?
kostya67 вне форума Ответить с цитированием
Старый 02.11.2013, 22:21   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

клиенту об том стало быть не сообщили..
eval вне форума Ответить с цитированием
Старый 03.11.2013, 10:54   #3
kostya67
Пользователь
 
Регистрация: 19.06.2013
Сообщений: 49
По умолчанию

А думал при закрытие отправлять от сервера сообщение ,но вылетает ошибка
Access и что-то там,уже не помню
kostya67 вне форума Ответить с цитированием
Старый 03.11.2013, 12:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
думал при закрытие отправлять от сервера сообщение
Ну так и делай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2013, 14:06   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Соединение не сразу разъединяется из за того, что роутер держит какое то время это соединение, проверку можно делать по ReadTimeout, то есть если в заданное время от сервера ничего нет, то будет разрыв соединения.


Более эфективно для сокетов это когда нужно чтобы сокет сам делал проверку на соелинение KeepAlive

Код:
  
uses 
WinSock ..........

function WSAIoctl(Const s: TSocket; cmd: DWORD; lpInBuffer: POINTER; dwInBufferLen:
   DWORD; 
   lpOutBuffer: POINTER; dwOutBufferLen: DWORD;
   lpdwOutBytesReturned: LPDWORD;
   lpOverLapped: POINTER;
   lpOverLappedRoutine: POINTER): Integer; stdcall; external 'WS2_32.DLL';



Function KeepAliveSocket(hSocket: TSocket):boolean;
const
SIO_KEEPALIVE_VALS = $98000004;
type
TAlive = record
 OnOff            : u_long;
 KeepAliveTime    : u_long;
 KeepAliveInterval: u_long;
 end;
var
Alive: TAlive;
Size: Integer;
begin
 Alive.onoff := 1;
 Alive.keepalivetime := 10000;
 Alive.keepaliveinterval := 1000;
 if WSAIoctl(hSocket, SIO_KEEPALIVE_VALS, @alive, sizeof(TAlive), nil, 0, @Size, NiL, NiL) = SOCKET_ERROR then
result:= false
else
result:= true;
 end;

Использовать так KeepAliveSocket(помещаешь хендел нужного сокета);

Последний раз редактировалось Aliens_wolfs; 04.11.2013 в 21:52.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdTCPClient и IdCmdTCPServer denis_gidin Работа с сетью в Delphi 4 06.11.2012 20:18
idTCPClient в ХЕ2 Афанасий[vedma] Компоненты Delphi 2 23.07.2012 16:18
работа с IdTCPClient knopkodaf Работа с сетью в Delphi 5 28.05.2012 20:07
IdTCPClient+FileListBox hysek Работа с сетью в Delphi 9 09.05.2012 02:00
Ошибка IdTcpClient sanek99 Работа с сетью в Delphi 1 13.02.2011 17:19