Вниз
Скачать: CL | DM;

Как правильно отсоединить клиента?   Найти похожие ветки 

← →
Akni ©   (2003-07-14 17:54) [0]

Подскажите, пожалуйста, как правильно реализовать сабж?
По условию задачи только один клиент может одновременно быть подключен к серверу, т.е. при попытке подсоедниния клиента нужно проверять, или есть уже подключенные. И если да, то отсоединять очередного «желающего».

Попытка отключить описанным ниже образом нужных результатов не дает.

TISServerThread: TThread;
fServerSocket: TserverSocket;
...
fServerSocket.OnClientConnect := SocketClientConnect;
....

procedure TISServerThread.SocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if fServerSocket.Socket.ActiveConnections>1 then
begin
Socket.Close;
Exit;
end;
...
end;


← →
Spawn ©   (2003-07-15 07:16) [1]

так поставь на
procedure TISServerThread.SocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);


← →
Digitman ©   (2003-07-15 08:10) [2]


> нужных результатов не дает


это почему же ? Socket.Close как раз и делает то, что тебе нужно !


← →
Snap ©   (2003-07-15 13:47) [3]

Может это что то не то, но кажется в сокетах есть свойство MaxConnections. Или нету... просто нету щас дельфи под рукой, не могу сам посмотреть. А так просто устанавливаеш его в 0 и больше ничего не надо.


← →
Digitman ©   (2003-07-15 13:53) [4]


> Snap


TServerSocket не имеет такого свойства.


← →
Akni ©   (2003-07-16 13:14) [5]


> Socket.Close как раз и делает то, что тебе нужно


Да, тут я поспешила с выводами. Тогда другой вопрос:
при таком отключения клиента происходит след.:
1. возникает событие OnClientDisconnect (ActiveConnections=2)
2. возникает событие OnAccept (ActiveConnections=2)

Вопрос: почему возникает OnAccept, ведь клиента-то уже отключили?


← →
Digitman ©   (2003-07-16 13:30) [6]


> почему возникает OnAccept, ведь клиента-то уже отключили?


быть того не может !
вероятно, клиент у тебя при обнаружении дисконнекта по инициативе сервера тут же автоматически запрашивает повторный коннект.

то что в обработчике OnAccept() ты видишь ActiveConnections=2, вполне нормально и лишний раз подтверждает это



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
6-58798
Noro
2003-07-17 22:06
2003.09.18
Передача данных: Клиент-Сервер, Сервер-Клиент


1-58774
Я
2003-09-05 16:19
2003.09.18
Как определить, выходной сегодня или будний день?


14-58859
Карлсон
2003-08-30 21:17
2003.09.18
Глюк форума или моего софта?


1-58733
Dilezzz
2003-09-07 14:48
2003.09.18
Чтение из файла. В чем ошибка?


8-58796
ianus
2003-05-14 22:03
2003.09.18
DelphiX и мерцание экрана




   Наверх