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

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

?? icqdirect2.pas

?? 本程序是轉載的
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
    DCEVENT_OnFTInit        :
      Begin
        dcRF := TicqDCRecvFile(Sender);
        If Assigned(fOnFTInit) then
          fOnFTInit(Self, dcRF.RemoteUIN, dcRF.FTStartRec.FilesCount, dcRF.TotalBytes, dcRF.FTStartRec.Speed, dcRF.NickName);
      End;
    DCEVENT_OnFTStart       :
      Begin
        dcRF := TicqDCRecvFile(Sender);
        If Assigned(fOnFTStart) Then
          fOnFTStart(Self, dcRF.FTStartRec, dcRF.FTRequestRec.FileName, dcRF.FTRequestRec.FileSize, dcRF.FTStartRec.Speed);
      End;
    DCEVENT_OnFTFileData    :
      Begin
        dcRF := TicqDCRecvFile(Sender);
        If assigned(fOnFTFileData) Then
          fOnFTFileData(Self, dcRF.RemoteUIN, dcRF.PDataPacket, dcRF.DataPacketLen, dcRF.IsLastPacket);
      End;
    DCEVENT_OnSendFileStart :
      Begin
        dcSF := TicqDCSendFile(Sender);
        If Assigned(fOnSendFileStart) Then
          fOnSendFileStart(Self, dcSF.RemoteUIN, dcSF.SendFileRecord);
      End;
    DCEVENT_OnSendFileData  :
      Begin
        dcSF := TicqDCSendFile(Sender);
        If Assigned(fOnSendFileData) Then
          fOnSendFileData(Self, dcSF.RemoteUIN, dcSF.PDataPacket, dcSF.DataPacketLen, dcSF.IsLastPacket);
      End;
    DCEVENT_OnSendFileFinish:
      Begin
        dcSF := TicqDCSendFile(Sender);
        If Assigned(fOnSendFileFinish) Then
          fOnSendFileFinish(Self, dcSF.RemoteUIN, dcSF.SendFileRecord, dcSF.Aborted);
      End;
  End;
End;

Function TicqDCM.SendData(aUIN:LongWord; pPkt: PRawPkt):Boolean;
Var
  i:integer;
Begin
  // Send Pkt through DCMain of User (aUIN)
  Result := False;
  If GetUserIndex(aUIN, i) then
    With PicqDirectUser(fUL[i])^ Do
      If IsConnected and (DCMain <> -1) Then Begin
        TicqDCNormal(fDCL.Items[DCMain]).SendData(pPkt);
        Result := True;
      End;
End;

function TicqDCM.SendDataFile(aUIN: LongWord; Pak: PRawPkt): Boolean;
Var
  i:Integer;
Begin
  // Send Pkt Through DCRecvFile of User (aUIN)
  Result := False;
  If GetUserIndex(aUIN, i) then
    With PicqDirectUser(fUL[i])^ Do
      If DCRecvFile <> -1 then Begin
        TicqDCRecvFile(fDCL[DCRecvFile]).SendData(Pak);
        Result := True;
      End;
End;

function TicqDCM.AddFileUser(aUIN: LongWord; var aPort: Word; FTReqRec:Pointer = nil): Boolean;
Var
  I:integer;
  aDC:TicqDCRecvFile;
  FTRec:TFTRequestRec;
  BPort:Word;
Begin
  Result := False;
  BPort := FindBindPort;
  // Add a DCRecvFile to User (aUIN)
  If GetUserIndex(aUin, i) then Begin
    With PicqDirectUser(fUL[i])^ Do Begin
      If DCRecvFile <> -1 Then
        DeleteDC(DCRecvFile);
      aPort := BPort;
      aDC := TicqDCRecvFile.Create(MyUIN, aUin, aPort);
      aDC.fIncoming := True;
      DCRecvFile := fDCL.Add(aDC);
      aDC.fpUser     := PicqDirectUser(fUL.Items[i]);
      aDC.fManager   := Self;
      aDC.FPort      := BPort;
      // Proxy Settings
      aDC.FProxyType := ProxyType;
      aDC.FProxyHost := ProxyHost;
      aDC.FProxyPort := ProxyPort;
      aDC.FProxyAuth := ProxyAuth;
      aDC.FProxyPass := ProxyPass;
      aDC.FUserID    := FUserID;
      aDC.FResolve   := FResolve;
      aDC.UseProxyResolve := UseProxyResolve;
      // Events
      aDC.FOnError   := InternalOnErrorProc;
      aDC.FOnPktDump := InternalOnPktDump;
      aDC.fOnHandle  := InternalOnHandle;
      aDC.fOnDCEvent := HandleDCEvent;
      If FTReqRec <> nil then
        With aDC.FTRequestRec Do Begin
          FTRec := TFTRequestRec(FTReqRec^);
          ReqType     := FTRec.ReqType;
          ITime       := FTRec.ITime;
          IRandomID   := FTRec.IRandomID;
          UIN         := FTRec.UIN;
          Description := FTRec.Description;
          FileName    := FTRec.FileName;
          FileSize    := FTRec.FileSize;
          Seq         := FTRec.Seq;
          Port        := aPort;
        End;
      // Connect
      aDC.Start;
      Result := True;
    End;
  End;
End;

Procedure TicqDCM.SetFileRecord(aUIN: LongWord; aFileRec:TSendFileRec);
Var
  i:integer;
  aDC:TicqDCSendFile;
Begin
  If GetUserIndex(aUIN, i) Then
    With PicqDirectUser(fUL[i])^ Do Begin
      If DCSendFile <> -1 Then
        DeleteDC(DCSendFile);
      aDC := TicqDCSendFile.Create(MyUin, aUin, aFileRec);
      DCSendFile := fDCL.Add(aDC);
      aDC.MyUIN     := MyUin;
      aDC.fpUser    := PicqDirectUser(fUL[i]);
      aDC.fIncoming := False;
      aDC.fManager  := Self;
      aDC.FOnError   := InternalOnErrorProc;
      aDC.FOnPktDump := InternalOnPktDump;
      aDC.fOnHandle  := InternalOnHandle;
      aDC.OnDCEvent := HandleDCEvent;
    End;
End;

Function TicqDCM.AddSendFileUser(aUIN:LongWord; Var aPort, aSeq:Word):Boolean;
Var
  i:integer;
Begin
  // Add a DCSendFile to User (aUIN);
  Result := False;
  If GetUserIndex(aUin, i) Then
    With PicqDirectUser(fUL[i])^ do Begin
      If DCSendFile <> -1 Then
       With TicqDCSendFile(fDCL[DCSendFile]) Do Begin
         //fpUser^.Port := Port;
         fSeq := aSeq;
         fRemPort := aPort;
         Start;
        End;
    End;
End;

function TicqDCM.StopFileReceiving(aUIN: LongWord): Boolean;
Var
  I:Integer;
Begin
  Result := false;
  // Break DCRecvFile connection for User (aUIN)
  If GetUserIndex(aUIN, i) Then
    With PicqDirectUser(fUL[i])^ Do
      If DCRecvFile <> -1 then
        DeleteDC(DCRecvFile);
  Result := True;
End;

Procedure TicqDCM.StopFileSending(aUIN: LongWord);
Var
  I:Integer;
Begin
  // Stop File Sending;
  If GetUserIndex(aUIN, i) then
    With PicqDirectUser(fUL[i])^ Do
      If DCSendFile <> -1 then Begin
        TicqDCSendFile(fDCL[DCSendFile]).Stop;
        Sleep(100);
        DeleteDC(DCSendFile);
      End;
End;

procedure TicqDCM.EstabilishConnection(aUIN: LongWord);
Var
  i, i2: integer;
  aDC:TicqDCNormal;
Begin
  // Establish DCMain connection for User (aUIN)
  If GetUserIndex(aUIN, i) then
    With PicqDirectUser(fUL.Items[i])^ Do Begin
      If IsConnected then Exit;
      If fpUser^.IntIP + fpUser^.ExtIP = 0 then Exit;
      if fpUser^.Port < 1025 Then Exit;
      If DCMain <> -1 then
        TicqDCNormal(fDCL.Items[DCMain]).Free;
      aDC := TicqDCNormal.Create(aUIN, TMySocket.Create, False);
      DCMain := fDCL.Add(aDC);
      aDC.fpUser     := PicqDirectUser(fUL.Items[i]);
      aDC.fManager   := Self;
      aDC.fRemUIN    := aUIN;
      aDC.MyUIN      := MyUIN;
      aDC.fPort      := FindBindPort;
      // Proxy Settings
      aDC.FProxyType := ProxyType;
      aDC.FProxyHost := ProxyHost;
      aDC.FProxyPort := ProxyPort;
      aDC.FProxyAuth := ProxyAuth;
      aDC.FProxyPass := ProxyPass;
      aDC.FUserID    := FUserID;
      aDC.FResolve   := FResolve;
      aDC.UseProxyResolve := UseProxyResolve;
      // Events
      aDC.FOnError   := InternalOnErrorProc;
      aDC.FOnPktDump := InternalOnPktDump;
      aDC.fOnHandle  := InternalOnHandle;
      aDC.fOnDCEvent := HandleDCEvent;
      // Connect
      aDC.Start;
      Sleep(100);
      If aDC.Client.Connected Then // If Socket is connecting then give up time and wait.
        For i2 := 0 to 300 Do Begin
          Sleep(10);
          GiveUpCpuTime;
          If IsConnected then Break;
        End;
    End;
End;

function TicqDCM.ConnectionEstabilished(aUIN: LongWord): Boolean;
Var
  i:integer;
  p:PicqDirectUser;
Begin
  // Poll for DCMain Connection for User (aUIN), should open a DCMain
  Result := False;
  If GetUserIndex(aUIN, i) then Begin
    P := PicqDirectUser(fUL.Items[i]);
    Result := P^.IsConnected;
    If Result Then
      Exit;
    // Attemp to Establish Connection
    EstabilishConnection(aUIN);  // Implements Connect On Demmand
    Result := P^.IsConnected;
  End;
End;

Procedure TicqDCM.DeleteUser(aUIN: LongWord);
Var
  i:integer;
Begin
 If GetUserIndex(aUIN, i) Then
   With PicqDirectUser(fUL.Items[i])^ Do Begin
     // Disconnect any connections
     If DCChat <> -1 then
       DeleteDC(DCChat);
     If DCSendFile <> -1 then
       DeleteDC(DCSendFile);
     If DCRecvFile <> -1 then
       DeleteDC(DCRecvFile);
     If DCMain <> -1 then
       DeleteDC(DCMain);
     FreeMem(fUL.Items[i], SizeOf(TicqDirectUser));
     fUL.Delete(i);
     Exit;
   End;
End;

Procedure TicqDCM.DeleteDC(Var aIndex:Integer);
Var
  aDC:TicqBaseDC;
Begin
  If (aIndex < 0) or (aIndex > (fDCL.Count -1))Then Begin
    aIndex := -1;
    Exit;
  End;
  aDC := TicqBaseDC(fDCL[aIndex]);

  fDCL.Delete(aIndex);
  aIndex := -1;
  If aDC = nil then Exit;
  With aDC Do
    If CSck <> nil then
      If CSck.Connected Then
        CSck.Disconnect;
  FreeAndNil(aDC);
End;

Function TicqDCM.GetUserIndex(aUIN:LongWord; Var Idx:integer):Boolean;
Var
  i:Integer;
Begin
  Result := False;
  For i := 0 to fUL.Count -1 Do
    If PicqDirectUser(fUL[i])^.UIN = aUIN then Begin
      Idx := i;
      Result := True;
      Exit;
    End;
End;
procedure TicqDCM.AddUser(aUIN, aCookie, aIPExt, aIPInt: LongWord; aPort: Word);
Var
  i:integer;
  p: PicqDirectUser;
Begin
  If GetUserIndex(aUIN, i) then
    With PicqDirectUser(fUL[i])^ Do Begin
    Cookie := aCookie;
    ExtIP  := aIPExt;
    IntIP  := aIPExt;
    Port   := aPort;
    IsConnected := False;
    If DCChat <> -1 Then
      DeleteDC(DCChat);
    If DCSendFile <> -1 Then
      DeleteDC(DCSendFile);
    If DCRecvFile <> -1 Then
      DeleteDC(DCRecvFile);
    If DCMain <> -1 then
      DeleteDC(DCMain);
    Exit;
    End;
  GetMem(p, SizeOf(TicqDirectUser));
  p^.UIN    := aUin;
  p^.Cookie := aCookie;
  p^.ExtIP  := aIPExt;
  p^.IntIP  := aIPInt;
  p^.Port   := aPort;
  p^.IsConnected := False;
  p^.DCMain      := -1;
  p^.DCRecvFile  := -1;
  p^.DCSendFile  := -1;
  p^.DCChat      := -1;
  fUL.Add(p);
End;

//****************************************************************************//
{ TicqBaseDC }
constructor TicqBaseDC.Create(aMyUIN: LongWord);
Begin
  Inherited Create;
  CSck := nil;
  SSck := nil;
  MyUin := aMyUIN;
  OnDCEvent := nil;
  OnError   := nil;
  OnHandle  := nil;
  OnPktDump := nil;
End;

destructor TicqBaseDC.Destroy;
Begin
  Inherited Destroy;
  Try
    //CSck.Disconnect;
    CSck.Free;
  Except
  End;
End;

Procedure TicqBaseDC.SetCSck(aSock:TMySocket);
Begin
  If CSck = aSock then Exit;
  If CSck <> nil then
    CSck.Free;
  CSck := aSock;
End;

Function TicqBaseDC.SendData(Pkt: PRawPkt):Boolean;
var
  buf: array[0..$FFFF - 1] of Byte;
Begin
  // Send Data
  If CSck.Connected Then Begin
    CSck.SendData(Pkt^.Len, 2);
    CSck.SendData(Pkt^, Pkt^.Len);
    Result := True;
  End Else Begin
    OnSockError(Self);
    Result := False;
    Exit;
  End;
  fpUser^.LastActivity := GetTickCount;
  If Assigned(fOnPktDump) Then Begin
    PWord(@buf)^ := Pkt^.Len;
    Move(Pkt^.Data, Ptr(LongWord(@buf) + 2)^, Pkt^.Len);
    fOnPktDump(Self, @Buf, Pkt^.Len + 2, False, fRemUIN);
  End;
End;

procedure TicqBaseDC.OnSockError(Sender: TObject);
Begin
  //fpUser^.IsConnected := False;

  Try
    If Sender is TMySocket then
    With Sender as TMySocket do Begin
      OnConnectError := Nil;
      OnDisconnect   := Nil;
      OnError        := Nil;
      If Connected Then
        Disconnect;
    End;
  Except
    //Ignore any errors
  End;

  If fpUser^.DCMain <> -1 Then
    If Sender = TicqBaseDC(fManager.fDCL[fpUser^.DCMain]).CSck then Begin
      fManager.DeleteDC(fpUser^.DCMain);
      fpUser^.IsConnected := False;
      Exit;
    End;
  If fpUser^.DCRecvFile <> -1 then
    If Sender = TicqBaseDC(fManager.fDCL[fpUser^.DCRecvFile]).CSck then Begin
      fManager.DeleteDC(fpUser^.DCRecvFile);
      Exit;
    End;
  If fpUser^.DCSendFile <> -1 then
    If Sender = TicqBaseDC(fManager.fDCL[fpUser^.DCSendFile]).CSck then Begin
      fManager.DeleteDC(fpUser^.DCSendFile);
      Exit;
    End;
  If fpUser^.DCChat <> -1 then
    If Sender =  TicqBaseDC(fManager.fDCL[fpUser^.DCChat]).CSck then
      fManager.DeleteDC(fpUser^.DCChat);
End;

procedure TicqBaseDC.OnSockConnectError(Sender: TObject);
Begin
  OnSockError(Self);
End;

procedure TicqBaseDC.OnConnect(Sender: TObject);
Var
  Pkt:TRawPkt;
Begin
  If fIncoming then Begin

  End Else
    With fpUser^ DO Begin
        LastActivity := GetTickCount;
        CreatePEER_INIT(@pkt, Cookie, fRemUIN, MyUIN, fManager.fpUser^.Port, fManager.fpUser^.ExtIP, fManager.fpUser^.IntIP, CSck.ProxyType);
        SendData(@pkt);
    End;
End;

{Recieve data and packetize it, then send it to the subclass}
procedure TicqBaseDC.OnReceive(Sender: TObject; Socket: TSocket; Buffer: Pointer; BufLen: LongWord);
Var
  i:integer;
Begin
  fpUser^.LastActivity := GetTickCount;

  If BufLen = 0 then Exit;
  For i := 0 to BufLen -1 Do Begin
    fDPkt.Data[fPktLen] := PByte(LongWord(Buffer) + LongWord(i))^;
    Inc(fPktLen);
    If fPktLen = 2 then Begin
      fPktSize := PWord(@fDPkt)^;
      If fPktSize > SizeOf(fDPkt.Data) Then Begin
        OnIntError(Self, ERR_INTERNAL, RS_ERROR_BUFFEROVERRUN);
        OnSockError(Self);
        Exit;
      End;
    End;
    If fPktLen = (fPktSize + 2) then Begin
      fDPkt.Len := 0;
      fPktSize  := 0;
      If Not HandlePacket(@fDPkt, fPktLen) Then
        fManager.InternalOnHandle(Sender, fpUser^.UIN, @fDPkt, fDPkt.Len);
      fPktLen   := 0;
    End;
  End;
End;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97超碰欧美中文字幕| 26uuu国产一区二区三区| 欧美日韩免费一区二区三区| 欧美久久久久久久久| 日韩一级二级三级精品视频| 久久久国产精华| 亚洲人妖av一区二区| 香蕉久久夜色精品国产使用方法| 另类中文字幕网| 国产高清视频一区| 色综合久久久久久久久| 日韩视频免费观看高清在线视频| 久久久国产一区二区三区四区小说| 成人免费在线观看入口| 石原莉奈一区二区三区在线观看| 狠狠色丁香久久婷婷综| 色哟哟亚洲精品| 欧美一级一区二区| 国产精品网站导航| 日本网站在线观看一区二区三区 | 欧美亚洲国产怡红院影院| 欧美精品日韩精品| 国产精品午夜免费| 日韩高清欧美激情| 暴力调教一区二区三区| 91精品国产麻豆| ...av二区三区久久精品| 美女国产一区二区三区| 91在线视频在线| 久久久噜噜噜久久人人看| 一区二区三区中文在线观看| 国产麻豆日韩欧美久久| 欧美亚洲免费在线一区| 欧美国产精品v| 免费一级欧美片在线观看| 色综合久久久久综合| 国产色婷婷亚洲99精品小说| 日本aⅴ免费视频一区二区三区| 99久久婷婷国产综合精品电影 | 美女视频网站久久| 91蜜桃视频在线| 久久亚洲欧美国产精品乐播| 亚洲成人在线网站| 99国产精品99久久久久久| 26uuu欧美| 日本成人中文字幕在线视频| 91污片在线观看| 国产丝袜在线精品| 久久精品久久精品| 欧美日韩黄色影视| 伊人一区二区三区| 岛国av在线一区| 亚洲精品在线观看视频| 天堂在线亚洲视频| 欧美在线视频你懂得| 中文字幕亚洲在| 国产精品一区二区在线观看不卡 | 国产精品久久久久aaaa樱花| 久久精品二区亚洲w码| 欧美日韩日日骚| 亚洲一区二区三区国产| 99久久精品国产精品久久| 国产视频一区在线播放| 国产一区二区免费看| 欧美电影免费提供在线观看| 水野朝阳av一区二区三区| 日本精品一区二区三区高清 | 国产91精品精华液一区二区三区| 日韩精品资源二区在线| 日韩av网站在线观看| 欧美羞羞免费网站| 一区二区三区日韩在线观看| www.性欧美| 自拍偷拍亚洲综合| 99精品久久99久久久久| 亚洲欧洲av在线| 99精品在线观看视频| 国产精品国产精品国产专区不蜜| 成人综合婷婷国产精品久久免费| 久久综合九色综合欧美亚洲| 国产综合久久久久久久久久久久| 日韩欧美中文一区| 狠狠色综合播放一区二区| 久久久蜜桃精品| 国产成人精品aa毛片| 国产精品伦理在线| 色综合天天综合狠狠| 亚洲中国最大av网站| 欧美日韩一级视频| 日本美女一区二区| 国产亚洲女人久久久久毛片| 成人av影视在线观看| 亚洲特黄一级片| 欧美色视频在线| 免费看欧美美女黄的网站| 日韩精品一区二区三区老鸭窝 | 中文字幕日韩av资源站| 91美女片黄在线观看91美女| 亚洲一区二区在线免费观看视频| 欧美日韩午夜在线视频| 久久国产精品72免费观看| 国产亚洲一区字幕| a级高清视频欧美日韩| 亚洲一区免费在线观看| 欧美一区二区三区在线观看视频| 久久福利资源站| 中文字幕制服丝袜一区二区三区 | 国产精品女同互慰在线看| 97se亚洲国产综合自在线| 亚洲成a人片在线不卡一二三区| 91精品久久久久久久久99蜜臂| 韩国三级在线一区| 国产精品传媒入口麻豆| 5858s免费视频成人| 国产98色在线|日韩| 亚洲一区二区三区自拍| 欧美mv和日韩mv的网站| 成年人网站91| 午夜影院久久久| 国产亚洲精品aa| 欧美日韩一区二区欧美激情| 国产一区 二区 三区一级| 亚洲美女淫视频| 欧美videos中文字幕| 色一区在线观看| 狠狠色2019综合网| 一区二区不卡在线视频 午夜欧美不卡在| 制服视频三区第一页精品| 成人丝袜视频网| 日精品一区二区三区| 日本一区二区三区国色天香 | 亚洲永久精品大片| 久久亚洲精品国产精品紫薇| 日本高清成人免费播放| 国产酒店精品激情| 亚洲成国产人片在线观看| 中文天堂在线一区| 日韩欧美一区二区不卡| 欧美曰成人黄网| 国产成人夜色高潮福利影视| 日韩综合小视频| 亚洲男人天堂av网| 国产欧美一区在线| 欧美丰满少妇xxxbbb| 91碰在线视频| 国产精品影视网| 日韩av一区二区在线影视| 亚洲免费观看高清完整版在线观看 | 日韩欧美激情四射| 91国产福利在线| 北条麻妃国产九九精品视频| 久久se这里有精品| 日本欧美大码aⅴ在线播放| 亚洲夂夂婷婷色拍ww47| 中文字幕第一区综合| 精品国产露脸精彩对白| 欧美欧美欧美欧美首页| 色哟哟日韩精品| 99久久777色| 成人激情校园春色| 国产精品一区三区| 国内外成人在线| 男人操女人的视频在线观看欧美| 有码一区二区三区| 亚洲欧美日韩一区| 国产精品久久久久国产精品日日| 久久理论电影网| 精品粉嫩超白一线天av| 91精品国产一区二区| 欧美日韩亚洲国产综合| 在线视频国产一区| 色吊一区二区三区| 色综合久久综合网| 色综合久久精品| 色噜噜狠狠成人网p站| 91浏览器入口在线观看| hitomi一区二区三区精品| 成人午夜激情片| 成人在线综合网站| 丰满少妇久久久久久久| 成人av综合一区| 9l国产精品久久久久麻豆| voyeur盗摄精品| 9i看片成人免费高清| 91首页免费视频| 91视频你懂的| 91久久精品一区二区二区| 色播五月激情综合网| 欧美色区777第一页| 欧美精品v国产精品v日韩精品| 欧美日韩高清影院| 337p亚洲精品色噜噜| 欧美一级午夜免费电影| 精品国产91九色蝌蚪| 久久久久久久av麻豆果冻| 国产亚洲婷婷免费| 日韩一区中文字幕| 一区二区三区免费在线观看| 亚洲一区二区在线播放相泽| 视频一区视频二区中文|