Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Вопрос   Найти похожие ветки 

 
xelax   (2002-07-17 14:56) [0]

Программа чат на локальной сети на основе сокетов.
Клиенты грузятся автораном. Как серверу отследить клиентов
(активны или нет) на случай аварийного завершения программы клиентов Reset или Power


 
Skier ©   (2002-07-17 15:22) [1]

>xelax
Нужно через определённый промежуток времени (TTimer)
посылать каждому клиенту сообщение типа "Ты здесь, сынок ?",
а он должен всякий раз отвечать "Я здесь папа".
Если клиент не ответил на такое сообщение сервера, то с ним
нет связи (?).

По другому, видимо, никак...


 
Eugene Lachinov ©   (2002-07-17 15:27) [2]

Может быть поможет

type
TTcpKeepAlive = record
onoff : DWord;
keepalivetime : DWord;
keepaliveinterval : DWord;
end;

const
SIO_KEEPALIVE_VALS = $80000000 or $18000000 or $00000004;

procedure TPowersock.SetKeepAlive(dwTime, dwInterval : DWord);
var
TcpKeepAlive : TTcpKeepAlive;
dwReturned : DWord;
begin
TcpKeepAlive.onoff := 1;
TcpKeepAlive.keepalivetime := dwTime;
TcpKeepAlive.keepaliveinterval := dwInterval;
WSAIoctl(ThisSocket, SIO_KEEPALIVE_VALS, @TcpKeepAlive,
sizeof(TcpKeepAlive), nil, 0, dwReturned, nil, nil);
end;


 
c0pYc@t   (2002-07-17 15:32) [3]

Попробуй выполнять действие посылки сообщения
s := "Ты живой";
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
ServerSocket1.Socket.Connections[i].SendText(s);
Клиент получив s="Ты живой";
s := "Да жив пока";
Socket.SendText(s);


 
Builder ©   (2002-07-17 21:41) [4]

Можно наоборот - как аська делала
Клиент посылает серверу сообщение - я жив!
Сервер его ловит и отмечает - о, чудак жив.

IMHO не дело сервера за клиентами гоняться


 
TTCustomDelphiMaster ©   (2002-07-17 22:17) [5]


> Builder © (17.07.02 21:41)

В случае аварийного завершения программы клиентов Reset или Power сервер даже не заметит что клиент помер. Он заметит только когда попробует обратиться к "мертвому" клиенту, тогда у него возникнет ошибка и соединение связанное с "мертвым" клиентом нужно будет закрыть самому.


 
Builder ©   (2002-07-18 10:02) [6]

2 TTCustomDelphiMaster

Да, ну и что?
А в аське неикогда не замечалось, что пишешь мессадж человеку который в онлайне, а как только отправляешь его он становиться в офлайне?
Все зависит от времени опроса



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

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
14-95502
esprit_bel
2002-06-22 02:17
2002.07.29
клава


1-95389
antoniz
2002-07-16 08:59
2002.07.29
Как привязать ListBox к RichEdit


3-95261
DKalinin
2002-07-09 11:34
2002.07.29
Как сделать столбец фиксированным?


3-95196
Nebula
2002-07-05 14:51
2002.07.29
IB SQL UDF


3-95244
Alek_1
2002-07-06 02:27
2002.07.29
От BDE к ADO