Форум: "Сети";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
ВнизКак правильно блокировать подключения в TServerSocket Найти похожие ветки
← →
Lucefer (2006-01-27 13:29) [0]Есть TServerSocket (stThreadBlocking) в событии OnAccept я уже имею IP адрес клиента желающего соединиться. Теперь я его сравниваю со списком BlackList и хочу его блокировать, т.е. не принимать соединение и не создавать потока. Как это сделать?
← →
Digitman © (2006-01-27 14:44) [1]Никак.
← →
Digitman © (2006-01-27 14:47) [2]Поток ты можешь и не создавать, но соединение на момент возникновения OnAccept уже установлено, и ты можешь лишь разорвать его.
Предупредить установление соединения (дабы не дать ему состояться) штатными средствами компонента нельзя.
← →
Lucefer (2006-01-27 15:27) [3]тогда, как правильней сделать?
1. Выполнять проверку на черный список непосредственно перед созданием Thread"a и передавать в созданный объект флаг о том что надо сразу же Terminate себя.
2.
2a.
На OnAccept:
if not CheckEnableIP(Socket.RemoteAddress) then begin
Socket.Close;
exit;
end;
2b
На GetThread
if ClientSocket.RemoteAddress="" then begin
SocketThread:=nil;
end else begin
SocketThread := TIOServerThread.Create( FALSE, ClientSocket);
end;
3c
Что делать с событием ThreadStart? ничего?
← →
Digitman © (2006-01-27 15:56) [4]на OnGetThread:
if ClientSocket.RemoteAddress="нежелательный адрес" then
ClientSocket.Close;
и все.
Раз ты не вернул в параметре SocketThread адрес явно созданного тобой своего трэд-объекта, по дифолту будет возвращен nil, при этом ServerSocket создаст дифолтный трэд-объект. который увидит, что ClientSocket закрыт и тут же же завершит выполнение метода ClientExecute.
> Что делать с событием ThreadStart? ничего?
Ничего.
Просто никак не обрабатывай это событие.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c