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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
14-95541
RV
2002-07-02 23:07
2002.07.29
Чем можно заняться без жены в какую-нибудь погоду?


1-95339
Leny
2002-07-18 07:53
2002.07.29
Изменить цвет текста


1-95394
AlexanderVasjuk
2002-07-15 16:55
2002.07.29
Lame API


1-95386
GenaPL
2002-07-15 16:15
2002.07.29
Как из приложения Делфи обновить свойства Internet Explorer


3-95247
bobby_n
2002-07-07 22:11
2002.07.29
ADO и DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский