亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wsockets.pas

?? 包含常用Internet協(xié)議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
    end;
    { And finally destroy ourself }
    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Message handler                                                           }
procedure TCustomWSocketServer.WndProc(var MsgRec: TMessage);
begin
    with MsgRec do begin
        if Msg = WM_CLIENT_CLOSED then begin
            { We *MUST* handle all exception to avoid application shutdown }
            try
                WMClientClosed(MsgRec)
            except
                on E:Exception do
                    HandleBackGroundException(E);
            end;
        end
        else
            inherited WndProc(MsgRec);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Called by destructor when child component (a clients) is create or        }
{ destroyed.                                                                }
procedure TCustomWSocketServer.Notification(
    AComponent : TComponent;
    Operation  : TOperation);
begin
    inherited Notification(AComponent, Operation);
    if Assigned(FClientList) and (AComponent is TWSocketClient) then begin
        if Operation = opInsert then
            { A new client has been created, add it to our list }
            FClientList.Add(AComponent)
        else if Operation = opRemove then
            { If one of our client has been destroyed, remove it from our list }
            FClientList.Remove(AComponent);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Called when a session is available, that is when a client is connecting   }
procedure TCustomWSocketServer.TriggerSessionAvailable(Error : Word);
var
    Client : TWSocketClient;
begin
    { Call parent event handler }
    inherited TriggerSessionAvailable(Error);
    { In case of error, do nothing }
    if Error <> 0 then
        Exit;

    Inc(FClientNum);
    Client                 := FClientClass.Create(Self);
    TriggerClientCreate(Client);
    Client.Name            := Name + 'Client' + IntToStr(FClientNum);
    Client.Banner          := FBanner;
    Client.Server          := Self;
    Client.HSocket         := Accept;
    TriggerClientConnect(Client, Error);
    { The event handler may have destroyed the client ! }
    if FClientList.IndexOf(Client) < 0 then
        Exit;
    { The event handler may have closed the connection }
    if Client.State <> wsConnected then
        Exit;
    { Ok, the client is still there, process with the connection }
    if (FMaxClients > 0) and (FMaxClients < ClientCount) then begin
        { Sorry, toomuch clients }
        Client.Banner := FBannerToBusy;
        Client.StartConnection;
        Client.Close;
    end
    else
        Client.StartConnection;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomWSocketServer.TriggerClientConnect(
    Client : TWSocketClient; Error : Word);
begin
    if Assigned(FOnClientConnect) then
        FOnClientConnect(Self, Client, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomWSocketServer.TriggerClientCreate(Client : TWSocketClient);
begin
    if Assigned(FOnClientCreate) then
        FOnClientCreate(Self, Client);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TCustomWSocketServer.TriggerClientDisconnect(
    Client : TWSocketClient; Error : Word);
begin
    if Assigned(FOnClientDisconnect) then
        FOnClientDisconnect(Self, Client, Error);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ get number of connect clients                                               }
function TCustomWSocketServer.GetClientCount : Integer;
begin
    if Assigned(FClientList) then
        Result := FClientList.Count
    else
        Result := 0;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Acces method to return a client by index.                                   }
{ Return nil if index is out of range.                                        }
function TCustomWSocketServer.GetClient(nIndex : Integer) : TWSocketClient;
begin
    if not Assigned(FClientList) then begin
        Result := nil;
        Exit;
    end;
    if (nIndex < 0) or (nIndex >= FClientList.Count) then begin
        Result := nil;
        Exit;
    end;
    Result := TWSocketClient(FClientList.Items[nIndex]);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Client has closed. Remove it from client list and destroy component.        }
procedure TCustomWSocketServer.WMClientClosed(var msg: TMessage);
var
    Client : TWSocketClient;
begin
    Client := TWSocketClient(Msg.LParam);
    try
        TriggerClientDisconnect(Client, Error);
    finally
        { Calling Destroy will automatically remove client from list because }
        { we installed a notification handler.                               }
        Client.Destroy;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Check if a given object is one of our clients.                              }
function TCustomWSocketServer.IsClient(SomeThing : TObject) : Boolean;
begin
    if not Assigned(FClientList) then
        Result := FALSE
    else
        Result := (FClientList.IndexOf(Pointer(SomeThing)) >= 0);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{*                                                                           *}
{*                            TWSocketClient                                 *}
{*                                                                           *}
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TWSocketClient.StartConnection;
begin
    if Length(FBanner) > 0 then
        SendStr(FBanner + #13#10);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Triggered when socket is closed. Need to inform server socket to update   }
{ client list and trigger client disconnect event.                          }
procedure TWSocketClient.TriggerSessionClosed(Error : Word);
begin
    if not FSessionClosedFlag then begin
        FSessionClosedFlag := TRUE;
        PostMessage(Server.Handle, WM_CLIENT_CLOSED, 0, LongInt(Self));
        inherited TriggerSessionClosed(Error);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This override base class GetPeerAddr. It return cached value.             }
function TWSocketClient.GetPeerAddr: String;
begin
    Result := FPeerAddr;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ This override base class GetPeerPort. It return cached value.             }
function TWSocketClient.GetPeerPort: String;
begin
    Result := FPeerPort;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
{ Override base class. Dup is called when a client is assigned to a         }
{ TWSocket. Assigning HSocket property will call Dup.                       }
procedure TWSocketClient.Dup(newHSocket : TSocket);
begin
    inherited Dup(newHSocket);
    { Cache PeerAddr value }
    FPeerAddr := inherited GetPeerAddr;
    FPeerPort := inherited GetPeerPort;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品麻豆视频| 精品国产3级a| 亚洲一区二区四区蜜桃| 欧美色男人天堂| 爽好多水快深点欧美视频| 欧美福利视频导航| 久久精品免费观看| 中文字幕不卡的av| 在线观看av一区二区| 人禽交欧美网站| 精品久久久久久最新网址| 成人性生交大片免费看中文| 国产精品污网站| 色婷婷精品大在线视频| 日韩精品亚洲专区| 国产欧美日本一区视频| 欧美性色欧美a在线播放| 日本女人一区二区三区| 日本一区二区三区dvd视频在线 | 久久先锋资源网| 不卡一区在线观看| 亚洲成人激情av| 久久先锋影音av鲁色资源网| 91老司机福利 在线| 日韩精品国产欧美| 中文字幕中文乱码欧美一区二区| 在线一区二区三区四区五区| 激情六月婷婷综合| 一区二区在线观看av| 欧美tickling挠脚心丨vk| 不卡的av在线播放| 青青青爽久久午夜综合久久午夜| 亚洲国产高清不卡| 日韩一二三四区| eeuss国产一区二区三区| 蜜臀va亚洲va欧美va天堂| 中文字幕一区二区视频| 日韩女优毛片在线| 色噜噜狠狠一区二区三区果冻| 麻豆精品新av中文字幕| 亚洲乱码中文字幕| 久久久噜噜噜久久人人看 | 国产欧美精品区一区二区三区| 日本韩国欧美一区| 国产99久久久久久免费看农村| 亚洲成人av一区二区| 中文字幕在线播放不卡一区| 91精品视频网| 色综合久久88色综合天天| 国产精品一区二区在线看| 午夜精品福利一区二区三区蜜桃| 欧美国产日韩在线观看| 精品久久人人做人人爰| 欧美日韩一区二区三区不卡| 99久久99精品久久久久久| 国产一区二区美女诱惑| 国产精品99久| 视频一区二区三区在线| 一区二区三区免费看视频| 中文字幕中文字幕一区二区| 精品国产一区二区国模嫣然| 91精品在线免费观看| 欧美性色综合网| 色婷婷国产精品综合在线观看| 成人av中文字幕| 国产高清久久久久| 国产精品一二一区| 经典一区二区三区| 国产一区二区中文字幕| 久久精品国产一区二区三区免费看| 午夜精品久久久久久不卡8050 | 亚洲一区二区成人在线观看| 国产精品久久久久久户外露出 | ...中文天堂在线一区| 欧美激情一区在线观看| 国产午夜精品一区二区三区嫩草 | 日韩一区二区三区观看| 欧美日本韩国一区二区三区视频| 一本色道a无线码一区v| 色哦色哦哦色天天综合| 欧美无乱码久久久免费午夜一区| 在线免费观看日本欧美| 欧美性淫爽ww久久久久无| 欧美日本在线播放| 日韩一区二区中文字幕| 26uuu国产电影一区二区| 亚洲精品亚洲人成人网在线播放| 中文字幕中文在线不卡住| 亚洲人123区| 亚洲国产欧美在线人成| 日韩黄色免费网站| 精品一区二区三区视频在线观看 | ww久久中文字幕| 国产亚洲欧美日韩俺去了| 国产午夜精品理论片a级大结局| 国产亚洲成年网址在线观看| 亚洲国产精品传媒在线观看| 中文字幕一区二区不卡| 一个色在线综合| 九色porny丨国产精品| 国产69精品一区二区亚洲孕妇| 成人免费视频免费观看| 欧美亚洲动漫制服丝袜| 欧美一级视频精品观看| 中日韩av电影| 亚洲一区二区av在线| 久草热8精品视频在线观看| 成人福利电影精品一区二区在线观看| 99re热视频精品| 在线播放国产精品二区一二区四区| 欧美成人午夜电影| 亚洲视频一二区| 美女mm1313爽爽久久久蜜臀| 99久久久久久99| 91麻豆精品国产91久久久更新时间| 精品成人一区二区三区四区| 中文字幕在线不卡视频| 天堂蜜桃一区二区三区| 丁香另类激情小说| 91 com成人网| 亚洲素人一区二区| 精品一区免费av| 在线观看免费一区| 国产亚洲一本大道中文在线| 偷拍一区二区三区四区| 国产91色综合久久免费分享| 欧美视频在线一区| 国产精品欧美一区喷水| 日本美女一区二区三区视频| 99在线精品一区二区三区| 91精品久久久久久久久99蜜臂| 国产精品传媒视频| 老司机午夜精品| 欧美日韩一卡二卡| 中文字幕中文乱码欧美一区二区| 久久精品国产**网站演员| 欧美无砖砖区免费| 亚洲欧洲www| 国产99久久久国产精品潘金网站| 欧美日本国产视频| 一区二区三区中文在线观看| 国产馆精品极品| 欧美本精品男人aⅴ天堂| 国产成人午夜精品影院观看视频| 欧美久久久久久蜜桃| 亚洲欧美日韩中文播放 | 99热在这里有精品免费| 欧美一级国产精品| 亚洲mv在线观看| 91麻豆自制传媒国产之光| 欧美激情资源网| 国产精品综合一区二区三区| 欧美videofree性高清杂交| 午夜电影久久久| 在线观看一区二区精品视频| 亚洲摸摸操操av| 91亚洲精品久久久蜜桃| 国产精品久久久久久久久免费丝袜 | 亚洲成人综合在线| 91亚洲资源网| 综合久久给合久久狠狠狠97色| 粉嫩av一区二区三区在线播放| 久久综合九色综合欧美就去吻| 麻豆一区二区99久久久久| 91精品国产麻豆| 五月天中文字幕一区二区| 欧美日免费三级在线| 亚洲综合清纯丝袜自拍| 色8久久人人97超碰香蕉987| 亚洲欧美二区三区| 欧美综合天天夜夜久久| 亚洲一区二区三区四区五区黄 | 久久久久久一级片| 国产盗摄精品一区二区三区在线| 久久久美女毛片 | 色综合久久中文字幕| 亚洲人一二三区| 色婷婷国产精品| 亚洲成a天堂v人片| 91麻豆精品国产91久久久久久久久| 男人的天堂亚洲一区| 精品捆绑美女sm三区| 国产v综合v亚洲欧| 国产精品成人一区二区三区夜夜夜| 成人精品一区二区三区四区| 视频一区二区欧美| 日韩女优毛片在线| 成人夜色视频网站在线观看| 亚洲婷婷在线视频| 欧美情侣在线播放| 精品一区二区国语对白| 中文字幕国产精品一区二区| 日本福利一区二区| 蜜臀精品久久久久久蜜臀| 亚洲国产精华液网站w | 日韩一区二区三区免费看| 国产麻豆视频一区| 亚洲精品菠萝久久久久久久| 7777女厕盗摄久久久| 岛国一区二区三区|