Форум: "Сети";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];
ВнизМожно ли при попытке подключения Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c