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

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

?? wsockbuf.pas

?? Delphi 網絡通信協議代碼,是多種網絡協議的實現代碼
?? 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:        francois.piette@pophost.eunet.be    
              francois.piette@rtfm.be             http://www.rtfm.be/fpiette
Creation:     April 1996
Version:      2.01
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1997, 1998 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.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| 精品一区二区在线观看| 国产一区二区三区四区五区美女| 极品少妇xxxx精品少妇| 国产老肥熟一区二区三区| 粉嫩aⅴ一区二区三区四区| www.久久精品| 欧美日韩一区二区三区在线| 欧美日韩一区二区欧美激情| 555夜色666亚洲国产免| 日韩午夜av电影| 2023国产一二三区日本精品2022| 国产亚洲精品精华液| 亚洲欧美另类图片小说| 亚洲国产欧美日韩另类综合 | 综合久久国产九一剧情麻豆| 日韩一区欧美一区| 亚洲国产综合在线| 国产一区二区导航在线播放| 成人sese在线| 欧美一级日韩一级| 国产精品免费视频观看| 亚洲国产美女搞黄色| 韩国三级在线一区| 91啪在线观看| 欧美不卡一二三| 亚洲欧美综合另类在线卡通| 日韩成人免费在线| gogo大胆日本视频一区| 91精品国产免费| 国产精品毛片久久久久久| 亚洲大片精品永久免费| 国产精品一二三四区| 欧美无砖专区一中文字| 国产性做久久久久久| 婷婷综合久久一区二区三区| 成熟亚洲日本毛茸茸凸凹| 欧美精品久久久久久久久老牛影院| 2021久久国产精品不只是精品| 亚洲视频网在线直播| 麻豆精品视频在线| 欧美色图在线观看| 亚洲欧美国产高清| 国产精品中文欧美| 欧美一级高清大全免费观看| 亚洲色图视频网| 国产一区二区三区视频在线播放 | 日韩不卡一二三区| 91农村精品一区二区在线| 日韩一级视频免费观看在线| 亚洲精品成a人| 不卡影院免费观看| 精品久久久久久亚洲综合网 | 91丨九色丨黑人外教| 亚洲精品一线二线三线无人区| 亚洲国产精品久久一线不卡| 成人激情黄色小说| 欧美高清在线一区二区| 国产美女精品在线| 欧美精品一区二区高清在线观看| 亚洲sss视频在线视频| 在线视频一区二区三区| 亚洲精品国产无套在线观| 91在线丨porny丨国产| 国产精品成人网| 成人av在线播放网站| 国产精品免费aⅴ片在线观看| 国产精品1区2区| 中文字幕欧美日本乱码一线二线| 国产电影精品久久禁18| 久久精品亚洲麻豆av一区二区 | 91在线免费播放| 国产精品福利av | 亚洲精品国产视频| 欧美在线|欧美| 亚洲18色成人| 91精品国产一区二区三区| 日韩精品久久理论片| 日韩精品资源二区在线| 精品一区二区av| 国产日产精品1区| 99综合影院在线| 亚洲永久免费av| 91精品国产色综合久久不卡蜜臀| 青青草成人在线观看| 精品粉嫩aⅴ一区二区三区四区| 韩国女主播成人在线观看| 国产日韩欧美亚洲| 91丨porny丨蝌蚪视频| 亚洲在线观看免费| 26uuu国产日韩综合| av在线播放成人| 午夜成人免费电影| 欧美精品一区二区三区久久久| 成人综合在线视频| 亚洲va国产va欧美va观看| 日韩久久精品一区| 91免费国产视频网站| 亚洲一区二区美女| 久久久久久久电影| 色88888久久久久久影院按摩| 午夜久久久久久久久久一区二区| 精品国产三级a在线观看| 国产99精品国产| 日韩电影一区二区三区| 国产精品久久久久久户外露出| 欧美在线观看视频一区二区| 国产剧情一区在线| 图片区小说区区亚洲影院| 国产人成一区二区三区影院| 欧美喷潮久久久xxxxx| 国产成人精品一区二区三区四区 | 欧美激情一区二区三区不卡| 欧美日韩国产小视频在线观看| 国产精品资源在线看| 天天亚洲美女在线视频| 国产精品免费av| 久久久精品影视| 欧美精品aⅴ在线视频| 91视视频在线观看入口直接观看www | 91精品国产入口在线| caoporen国产精品视频| 蜜臀精品一区二区三区在线观看 | 亚洲成人自拍偷拍| 欧美激情在线一区二区三区| 欧美一卡二卡三卡四卡| 91蜜桃婷婷狠狠久久综合9色| 国产精品一级黄| 国精品**一区二区三区在线蜜桃| 午夜欧美大尺度福利影院在线看| 国产精品视频麻豆| 国产精品午夜久久| 久久久久综合网| 久久午夜色播影院免费高清| 日韩欧美一级特黄在线播放| 欧美日本在线播放| 欧美性感一类影片在线播放| 99视频精品全部免费在线| 国产不卡视频一区| 成人av网址在线| 国产a精品视频| 成人一区在线观看| 99久久er热在这里只有精品15 | 日本久久精品电影| 91免费观看视频| 在线免费观看日韩欧美| 欧美亚洲高清一区| 欧美日韩精品一区二区在线播放| 在线精品视频小说1| 欧美日韩一区二区三区视频| 欧美日韩免费观看一区三区| 欧美久久久久久久久中文字幕| 精品视频在线看| 制服丝袜中文字幕一区| 日韩色在线观看| 精品国产91乱码一区二区三区| 日韩精品自拍偷拍| 国产欧美日韩另类视频免费观看| 国产亚洲欧洲一区高清在线观看| 久久精品免费在线观看| 中文字幕精品三区| 成人欧美一区二区三区小说| 亚洲精品免费播放| 免费在线成人网| 国产一区二区三区高清播放| 风间由美一区二区三区在线观看| 91片在线免费观看| 日韩手机在线导航| 国产午夜精品美女毛片视频| 亚洲欧美日韩国产中文在线| 亚洲国产精品久久久久秋霞影院| 日韩主播视频在线| 国产一区二区三区免费在线观看 | 欧美aaaaa成人免费观看视频| 麻豆精品精品国产自在97香蕉| 国产激情视频一区二区在线观看| 99国产精品久| 日韩视频免费观看高清完整版 | 婷婷六月综合亚洲| 国产一区二区三区在线观看免费视频| 一本色道综合亚洲| 欧美一级一级性生活免费录像| 国产日韩v精品一区二区| 一区二区三区国产| 国产一区二区在线观看免费| 色狠狠av一区二区三区| 久久一日本道色综合| 一区二区三区欧美在线观看| 久久精品国产一区二区三区免费看| 成人精品视频.| 欧美videos大乳护士334| 亚洲欧美日韩中文字幕一区二区三区 | 欧美这里有精品|