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

Вниз

Можно ли при попытке подключения   Найти похожие ветки 

 
FireMan_Alexey ©   (2009-02-11 00:53) [0]

Можно ли при попытке подключения к моему серверу, отключить клиента так, чтобы он получил ошибку сервер перегружен.
Т.е. настроить так, чтобы к моему серверу от клиента было не больше N подключений.
Просто при подключении,после Accept, если просто выполнить CloseSocket, то приходит обыкновенное событие о закрытии соединения. А мне бы хотелось, чтобы клиент получил ошибку, что сервер перегружен :)


 
Сергей М. ©   (2009-02-11 08:18) [1]

В winsock2 - да, можно.


 
Сергей М. ©   (2009-02-11 08:28) [2]

http://citforum.yspu.yar.ru/programming/delphi/sockets-2/


 
FireMan_Alexey ©   (2009-02-11 16:55) [3]

Спасибо! пошел изучать :)


 
FireMan_Alexey ©   (2009-02-12 22:37) [4]

>Сергей М. ©  
Я конечно понимаю, что надо создавать в другую ветку, но может подскажите как можно передать адрес не статической функции, а метода класса?

function WSAAccept(
S:TSocket;
Addr:PSockAddr;
AddrLen:PInteger;
lpfnCondition:TConditionProc;
dwCallbackData:DWORD):TSocket;

type TConditionProc=function(
 lpCallerId,lpCallerData:PWSABuf;
 lpSQOS,lpGQOS:PQOS;
 lpCalleeID,lpCalleeData:PWSABuf;
 g:PGroup;
 dwCallbackData:DWORD):Integer;stdcall;


 
FireMan_Alexey ©   (2009-02-12 22:39) [5]

В смысле в WSAAccept передать :)


 
Сергей М. ©   (2009-02-13 10:18) [6]

А зачем ?

Рег.функция, адрес которой надо передать параметром, предусматривает передачу пользовательских данных - dwCallbackData. Это можно с успехом приспособить для передачи адреса объеста, чей метод будет фактически выполнять проверку кондиций.

function ConditionProc(
 lpCallerId,lpCallerData:PWSABuf;
 lpSQOS,lpGQOS:PQOS;
 lpCalleeID,lpCalleeData:PWSABuf;
 g:PGroup;
 SomeObject:TMyObject):Integer;
begin
  Result := SomeObject.MyConditionFuncMethod(lpCallerId, lpCallerData, lpSQOS, lpGQOS, lpCalleeID, lpCalleeData, g);
end;
..
hSocket := WSAAccept(....., MyObject);


 
Сергей М. ©   (2009-02-13 10:21) [7]

точнее так:

var
 MyObject: TMyObject;
..
hSocket := WSAAccept(....., Cardinal(Pointer(MyObject)));


 
Григорьев Антон ©   (2009-02-13 13:23) [8]


> FireMan_Alexey ©   (11.02.09 16:55) [3]
> Спасибо! пошел изучать :)

Тогда уж изучайте в оригинале: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1060

Время от времени я нахожу какие-нибудь неточности в своих статьях и правлю их. Правлю, естественно, только в Королевстве. А на всякие сайты типа citforum"а, которые воруют статьи, эти исправления, естественно, не попадают. А ещё были случаи, когда эти копировальщики не могли даже скопировать без ошибок.


 
FireMan_Alexey ©   (2009-02-14 06:12) [9]

>Сергей М. ©
 Еще раз Спасибо :)
>Григорьев Антон ©
 Вам тоже спасибо, буду опираться на оригинал статьи :)



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1288338243
Vlad_MK
2010-10-29 11:44
2011.02.13
Посоветуйте генератор отчетов


15-1288467409
Novi4ok
2010-10-30 23:36
2011.02.13
Дельфи или Си?


15-1288703175
Кто б сомневался
2010-11-02 16:06
2011.02.13
Как узнать какая прога запустила мою прогу


8-1210105843
Zoom
2008-05-07 00:30
2011.02.13
ACM codec


2-1289661379
mfender
2010-11-13 18:16
2011.02.13
Наследники