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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wsockbuf.pas

?? 包含常用Internet協議TCP,UDP、HTTP、FTP、Telnet等
?? PAS
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  TBuffer is an object wich buffers data in a single dynamically
              allocated memory block. It is a kind of FIFO wich manages
              characters in bloc of various sizes.
EMail:        http://users.swing.be/francois.piette  francois.piette@swing.be
              http://www.rtfm.be/fpiette             francois.piette@rtfm.be
              francois.piette@pophost.eunet.be
Creation:     April 1996
Version:      2.01
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1997-2000 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.be><francois.piette@swing.be>

              This software is provided 'as-is', without any express or
  	      implied warranty.  In no event will the author be held liable
              for any  damages arising from the use of this software.

              Permission is granted to anyone to use this software for any
              purpose, including commercial applications, and to alter it
              and redistribute it freely, subject to the following
              restrictions:

              1. The origin of this software must not be misrepresented,
                 you must not claim that you wrote the original software.
                 If you use this software in a product, an acknowledgment 
                 in the product documentation would be appreciated but is
                 not required.

              2. Altered source versions must be plainly marked as such, and
                 must not be misrepresented as being the original software.

              3. This notice may not be removed or altered from any source
                 distribution.
                 
              4. You must register this software by sending a picture postcard
                 to the author. Use a nice stamp and mention your name, street
                 address, EMail address and any comment you like to say.

Updates:
Mar 06, 1998  V2.00 Added a property and a parameter for the create method
              to select the buffer size. Using a 0 value will make the object
              use the default 1514 bytes (the largest size for an ethernet
              packet).
Jul 08, 1998  V2.01 Adadpted for Delphi 4


 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit WSockbuf;

interface

uses
  SysUtils;

const
  WSockBufVersion = 201;

type
  TBuffer = class(TObject)
    Buf      : Pointer;
    FBufSize : Integer;
    WrCount  : Integer;
    RdCount  : Integer;
  public
    constructor Create(nSize : Integer); virtual;
    destructor  Destroy; override;
    function    Write(Data : Pointer; Len : Integer) : Integer;
    function    Read(Data : Pointer; Len : Integer) : Integer;
    function    Peek(var Len : Integer) : Pointer;
    function    Remove(Len : Integer) : Integer;
    procedure   SetBufSize(newSize : Integer);
    property    BufSize : Integer read FBufSize write SetBufSize;
  end;

implementation


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
constructor TBuffer.Create(nSize : Integer);
begin
    inherited Create;
    WrCount  := 0;
    RdCount  := 0;
    BufSize := nSize;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
destructor TBuffer.Destroy;
begin
    if Assigned(Buf) then
        FreeMem(Buf, FBufSize);

    inherited Destroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TBuffer.SetBufSize(newSize : Integer);
var
    newBuf : Pointer;
begin
    if newSize <= 0 then
        newSize := 1514;

    if newSize = FBufSize then
        Exit;

    if WrCount = RdCount then begin
        { Buffer is empty }
        if Assigned(Buf) then
            FreeMem(Buf, FBufSize);
        FBufSize := newSize;
        GetMem(Buf, FBufSize);
    end
    else begin
        { Buffer contains data }
        GetMem(newBuf, newSize);
        Move(Buf^, newBuf^, WrCount);
        if Assigned(Buf) then
            FreeMem(Buf, FBufSize);
        FBufSize := newSize;
        Buf      := newBuf;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Write(Data : Pointer; Len : Integer) : Integer;
var
    Remaining : Integer;
    Copied    : Integer;
begin
    Remaining := FBufSize - WrCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len <= Remaining then
            Copied := Len
        else
            Copied := Remaining;
        Move(Data^, (PChar(Buf) + WrCount)^, Copied);
        WrCount := WrCount + Copied;
        Result  := Copied;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Read(Data : Pointer; Len : Integer) : Integer;
var
    Remaining : Integer;
    Copied    : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len <= Remaining then
            Copied := Len
        else
            Copied := Remaining;
        Move((PChar(Buf) + RdCount)^, Data^, Copied);
        RdCount := RdCount + Copied;

        if RdCount = WrCount then begin
            RdCount := 0;
            WrCount := 0;
        end;

        Result := Copied;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Peek(var Len : Integer) : Pointer;
var
    Remaining : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then begin
        Len    := 0;
        Result := nil;
    end
    else begin
        Len    := Remaining;
        Result := PChar(Buf) + RdCount;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function TBuffer.Remove(Len : Integer) : Integer;
var
    Remaining : Integer;
    Removed   : Integer;
begin
    Remaining := WrCount - RdCount;
    if Remaining <= 0 then
        Result := 0
    else begin
        if Len < Remaining then
            Removed := Len
        else
            Removed := Remaining;
        RdCount := RdCount + Removed;

        if RdCount = WrCount then begin
            RdCount := 0;
            WrCount := 0;
        end;

        Result := Removed;
    end;
end;


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

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区| 制服丝袜一区二区三区| 蜜臀av一区二区三区| 亚洲精品日韩一| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美区在线观看| 99久久久国产精品| 精品制服美女丁香| 青娱乐精品在线视频| 亚洲第四色夜色| 亚洲精品国产a| 亚洲美女精品一区| 18成人在线观看| 成人欧美一区二区三区| 欧美国产成人精品| 国产精品午夜春色av| 久久久精品免费网站| 精品国产免费视频| 欧美刺激午夜性久久久久久久| 欧美午夜片在线看| 欧美日韩在线直播| 欧美日韩国产高清一区二区三区| 色综合久久综合网欧美综合网| 99久久精品国产一区二区三区| 天堂成人国产精品一区| 亚洲韩国精品一区| 日本不卡不码高清免费观看| 久久精品国产亚洲5555| 国内精品视频666| 另类小说色综合网站| 日本欧美一区二区三区| 免费在线成人网| 老司机免费视频一区二区三区| 日本美女一区二区三区| 久久精品国产亚洲a| 国内欧美视频一区二区| 国产**成人网毛片九色 | 99久久99久久精品免费看蜜桃| 懂色av中文一区二区三区| 激情综合色播激情啊| 国内精品在线播放| 国产成人h网站| 97精品超碰一区二区三区| www.一区二区| 欧美视频中文字幕| 欧美精品亚洲二区| 欧美一级日韩不卡播放免费| 精品欧美一区二区三区精品久久| 26uuuu精品一区二区| 精品国产免费一区二区三区香蕉| 26uuu色噜噜精品一区| 国产欧美一区二区精品婷婷| 中文字幕一区二区三区在线播放| 一区二区三区四区视频精品免费 | 日韩三级伦理片妻子的秘密按摩| 久久一留热品黄| 国产精品福利电影一区二区三区四区 | 26uuu亚洲综合色| 欧美激情艳妇裸体舞| 悠悠色在线精品| 男男成人高潮片免费网站| 国产电影一区在线| 精品视频123区在线观看| 精品国产乱码久久久久久1区2区| 国产精品久久久久精k8| 亚洲成人自拍网| 丁香天五香天堂综合| 欧美日韩在线播放| 国产日韩av一区| 亚洲一区二区影院| 国产一区二区成人久久免费影院| 成人精品电影在线观看| 欧美丝袜丝交足nylons| 久久这里只有精品首页| 亚洲一区视频在线| 国产成人在线网站| 欧美日本高清视频在线观看| 国产日韩欧美制服另类| 午夜欧美视频在线观看| 粉嫩绯色av一区二区在线观看 | 欧美激情一区二区三区四区| 亚洲高清免费一级二级三级| 国产超碰在线一区| 欧美日韩久久久| 中文一区二区在线观看| 免费不卡在线视频| 91传媒视频在线播放| 日韩免费性生活视频播放| 亚洲美女区一区| 成人做爰69片免费看网站| 欧美视频一区二区三区在线观看| 欧美国产一区视频在线观看| 蜜臀av一区二区在线免费观看| 欧美日韩国产系列| 一区二区成人在线视频| 不卡视频在线观看| 国产亚洲一区二区三区| 亚洲午夜久久久久久久久电影网| 粉嫩13p一区二区三区| 精品国产一二三区| 午夜精品久久久久久| 色婷婷亚洲一区二区三区| 国产色综合久久| 精品一二三四在线| 91精品国产欧美日韩| 亚洲国产cao| 在线中文字幕一区| 综合激情成人伊人| jvid福利写真一区二区三区| 久久久99久久| 国产一区在线精品| 欧美一区二区三区四区高清| 一个色妞综合视频在线观看| 91在线播放网址| 最新中文字幕一区二区三区 | 91成人看片片| 有坂深雪av一区二区精品| 99re热视频这里只精品| 久久精品免费在线观看| 国产一区二区三区| 2023国产精品| 国产做a爰片久久毛片| 精品国产一区二区三区av性色| 久久国产精品无码网站| 精品捆绑美女sm三区| 久久成人av少妇免费| 精品成人一区二区| 激情综合网最新| 久久色视频免费观看| 国产成人在线色| 中文在线资源观看网站视频免费不卡| 国产黄色91视频| 中文字幕不卡在线播放| eeuss鲁片一区二区三区在线观看| 国产精品日产欧美久久久久| 成人高清视频在线观看| 自拍偷拍国产精品| 日本韩国一区二区三区| 洋洋av久久久久久久一区| 欧美三级日韩三级| 亚洲一二三区在线观看| 欧美日韩国产天堂| 久久国产精品99久久久久久老狼| 欧美一级一级性生活免费录像| 日本怡春院一区二区| 欧美视频一区二区三区在线观看 | 成人av网址在线| 一区二区三区高清在线| 欧美日本韩国一区| 国产麻豆视频一区| 亚洲欧美色一区| 91精品免费在线观看| 国产精品一区二区在线播放 | 在线国产亚洲欧美| 日韩成人一级片| 久久久亚洲精品石原莉奈| 99在线精品一区二区三区| 亚洲国产视频在线| 亚洲精品在线观看网站| 99久久综合狠狠综合久久| 亚洲电影视频在线| 在线观看一区日韩| 国产一区二区视频在线| 亚洲天堂av老司机| 欧美精品一二三| 成人午夜电影网站| 亚洲r级在线视频| 国产日韩欧美亚洲| 欧美无砖专区一中文字| 狠狠色丁香久久婷婷综合_中| 国产精品二三区| 日韩欧美不卡一区| 91美女片黄在线观看91美女| 日韩电影免费一区| 中文字幕中文字幕中文字幕亚洲无线| 91亚洲精品久久久蜜桃网站| 日韩极品在线观看| 国产精品美女久久久久av爽李琼 | 日韩一区二区三区电影| 高清成人在线观看| 一区二区三区久久久| 91精品免费观看| 成人福利视频网站| 日韩精彩视频在线观看| 国产精品久久看| 欧美刺激午夜性久久久久久久 | 91福利在线导航| av高清久久久| 国产精品一线二线三线| 日韩影视精彩在线| 亚洲va韩国va欧美va精品| 亚洲美女视频在线观看| 亚洲欧洲无码一区二区三区| 国产欧美一区二区精品忘忧草| 日韩午夜电影在线观看| 欧美日韩视频第一区| 99免费精品在线| 成人国产视频在线观看| 国产成人免费视频一区| 国产精品亚洲第一|