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

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

?? icqdirect2.pas

?? 本程序是轉(zhuǎn)載的
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
procedure TicqBaseDC.OnIntPktDump(Sender: TObject; Buffer: Pointer; BufLen: LongWord; Incoming: Boolean; UIN: Cardinal);
Begin
  If Assigned(fOnPktDump) Then
    fOnPktDump(Sender, Buffer, BufLen, Incoming, UIN);
End;

procedure TicqBaseDC.OnIntError(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String);
Begin
  If Assigned(fOnError) Then
    fOnError(Sender, ErrorType, ErrorMsg);
End;

Function TicqBaseDC.HandlePacket(pPkt: PRawPkt; PktLen:Integer):Boolean;
Var
  i:Integer;
  PktPos:Integer;
  aPktLen:Integer;
  lPkt:TRawPkt;
  PrtVer, Port, Port2:Word;
  CheckByte, PrxType:Byte;
  UIN, aRemUIN, Cookie, ExtIP, IntIP:LongWord;
Begin
  Result := False;
  // Handle Incoming Packet;
  PktPos := pPkt^.Len;
  Try
    If Assigned(fOnPktDump) Then
      fOnPktDump(Self, pPkt, PktLen, True, fpUser^.UIN);
    // Decode Packet Len and Command
    aPktLen := GetLint(pPkt, 2);
    Case GetInt(pPkt, 1) Of
      PEER_INIT:
        Begin
          Try
            // Get Data From Packet.
            PrtVer    := GetLInt(pPkt, 2);// ProtoVersion (WORD.L)
            CheckByte := GetLInt(pPkt, 2);// $2B  ??  (BYTE)
            UIN       := GetLInt(pPkt, 4);//  UIN (DOWRD.L)
            Inc(pPkt^.Len, 2);// $00 - $00  (WORD)
            Port      := GetLInt(pPkt, 4);// Port (DWORD.L)
            aRemUIN   := GetLInt(pPkt, 4);// Remote UIN  (DWORD.L)
            ExtIP     := GetLInt(pPkt, 4);// IP's (2 x DWORD.L)
            IntIP     := GetLInt(pPkt, 4);
            PrxType   := GetInt(pPkt, 1);// ProxyType (Byte)
            Port2     := GetLInt(pPkt, 4);// Port (DWORD.L)
            Cookie    := GetInt(pPkt, 4);// Cookie (DWORD)

            // Put Data where it Belongs.
            If fIncoming And (fpUser^.UIN = 0)Then Begin
              // Need to Check if RemUIN is in User list, if not then
              // Should Denie connection (not in Contacts) else
              // Should Move the connection over to that user.

              If fManager.GetUserIndex(aRemUIN, i) then Begin
                fRemUIN := aRemUIN;
                With PicqDirectUser(fManager.fUL[i])^ Do Begin
                  If DCMain <> -1 then
                    DeleteDC(DCMain);
                  DCMain := fManager.fDCL.IndexOf(Self);
                  // Ok Connection is moved, free mem.
                  FreeMem(fpUser, SizeOf(TicqDirectUser));
                  fpUser := PicqDirectUser(fManager.fUL[i]);
                End;
              End Else Begin
                // Else Denie connection.
                i := fManager.fDCL.IndexOf(Self);
                fManager.DeleteDC(i);
              End;
            End;
            // Ack it.
            CreatePEER_ACK(@lPkt);
            SendData(@lPkt);
            // Check Data.
            If PrtVer < 7 then Begin
              OnIntError(Self, ERR_Internal, RS_ERROR_NO_DC_WRONGVER);
            End;
            If (Uin <> MyUIN) or (fRemUIN <> aRemUIN) or
               (Port <> Port2) or (fpUser^.Cookie <> Cookie)Then Begin
              OnIntError(Self, ERR_INTERNAL, RS_ERROR_NO_DC_SECURITY);
              OnSockError(Self);
              Exit;
            End;
            If (PrxType <> 01) and (PrxType <> 02) and (PrxType <> 04) Then Begin
              OnIntError(Self, ERR_INTERNAL, RS_ERROR_NO_DC_UNSUPPORTEDPROXY);
              OnSockError(Self);
              Exit;
            End;
            If fIncoming Then Begin
              // And Send a PEER_INIT
              CreatePEER_INIT(@lpkt, fpUser^.Cookie, aRemUIN, MyUIN, fpUser^.Port, fpUser^.ExtIP, fpUser^.IntIP, CSck.ProxyType);
              SendData(@lPkt);

            End Else Begin
              // And Send PEER_INIT2
              CreatePEER_INIT2(@lpkt, FIncoming);
              SendData(@lpkt);
              //fpUser^.IsConnected := True;
            End;
            Result := True;
          Except
            OnIntError(Self, ERR_INTERNAL, RS_ERROR_NO_DC_PACKETERROR);
          End;
        End;
      PEER_INIT2:
        Begin
        Result := True;
        If fIncoming then Begin
          CreatePEER_INIT2(@lpkt, FIncoming);
          SendData(@lpkt);
          Result := True;
        End;
        fpUser^.IsConnected := True;
        //Result := False;
        End;
    Else
      Result := False;
    End;
  Finally
    If Not Result then
      pPkt^.Len := PktPos;
  End;
End;

//****************************************************************************//
{ TicqDCNormal }
constructor TicqDCNormal.Create(aMyUIN: LongWord; aClient: TMySocket; Incoming:Boolean);
Begin
  Inherited Create(aMyUIN);
  fIncoming := Incoming;
    Client := aClient;
    CSck.OnConnectError := OnSockConnectError;
    CSck.OnDisconnect   := OnSockError;
    Csck.OnConnectProc  := OnConnect;
    CSck.OnReceiveProc  := OnReceive;
End;

Function TicqDCNormal.Start:Boolean;
Var
  inaddr: in_addr;
Begin
  Result := False;
  If fIncoming then Begin
    Exit;
  End;
  // Connect
  inaddr.S_addr := fpUser^.ExtIP;
  CSck.Host := inet_ntoa(inaddr);
  CSck.Port := fpUser^.Port;
  CSck.Connect;
  Result := True;
End;

Procedure TicqDCNormal.Stop;
Begin
  // Disconnect
  cSck.Disconnect;
  fpUser^.IsConnected := False;
End;

Function TicqDCNormal.HandlePacket(pPkt: PRawPkt; PktLen:Integer):Boolean;
Var
  aPktLen:Integer;
  CheckByte, PrxType:Byte;
  UIN, aRemUIN, Cookie, ExtIP, IntIP:LongWord;
Begin
  Result := Inherited HandlePacket(pPkt, PktLen);
  If Result then Exit;
  // Handle Incoming Packet;
    aPktLen := GetLint(pPkt, 2);
    Case GetInt(pPkt, 1) Of
       PEER_MSG:
         Begin
           // Pass Pkt back to ICQClient for handling.
           pPkt^.Len := PktLen;  // Set Len to Size of Pkt for Decryption.
           Result := False;
         End;
    Else
      Result := False;
    End;
End;

//****************************************************************************//
{ TicqDCRecvFile }
Constructor TicqDCRecvFile.Create(MyUIN, aUIN: LongWord; aPort:Dword);
Begin
  Inherited Create(MyUIN);
  fRemUIN := aUIN;
  fPort   := aPort;
  DataPacketLen := 0;
  NickName := '';
  IsLastPacket := False;
  TotalBytes := 0;
  FTRequestRec.UIN := aUIN;
  FTRequestRec.Port:= aPort;
  FTStartRec.UIN   := aUIN;
End;

Procedure TicqDCRecvFile.OnRFSrvSockConnect(Sender: TObject; Socket: TMySocket);
Begin
  Client := Socket;

  CSck.OnConnectError := OnSockConnectError;
  CSck.OnDisconnect   := OnSockError;
  Csck.OnConnectProc  := OnConnect;
  CSck.OnReceiveProc  := OnReceive;

  SSck.StopServer;
  fSrvConnected := True
End;

Function TicqDCRecvFile.Start:Boolean;
Begin
  SSck := TSrvSocket.Create;
  SSck.OnClientConnected := OnRFSrvSockConnect;
  SSck.StartServer(FTRequestRec.Port);
  Result := True;
End;

Procedure TicqDCRecvFile.Stop;
Begin
  If fSrvConnected then Begin
    CSck.Disconnect;
  End Else
    SSck.StopServer;
End;

Function TicqDCRecvFile.HandlePacket(pPkt: PRawPkt; PktLen:Integer):Boolean;
Var
  aPktLen:Integer;
  lPkt:TRawPkt;
Begin
  Result := Inherited HandlePacket(pPkt, PktLen);
  If Result then Exit;
  // Handle Incoming Packet;
    aPktLen := GetLint(pPkt, 2);
    Case GetInt(pPkt, 1) Of
      PEER_FILE_INIT:
        Begin
          Inc(pPkt^.Len, 4);  //Skip Unknown (00 00 00 00)
          FTStartRec.FilesCount := GetLInt(pPkt, 4);  // Number of files sent
          TotalBytes := GetLint(pPkt, 4);             // TotalSize of all Files
          FTStartRec.Speed := GetLInt(pPkt, 4);       // Speed: 0 = Pause, 64 = Bo Delay
                                                      // 0 < n < 64 = (64-n) * 0.05s delay.
          NickName := GetLNTS(pPkt);                  // Nick of Sender;

          CreatePEER_FILEINITACK(@lPkt, FTStartRec.Speed, NickName);
          SendData(@lPkt);

          EventType := DCEVENT_OnFTInit;
          If assigned(fOnDCEvent) then  // Call the Event OnFTInit
            fOnDCEvent(Self);
        End;
      PEER_MSG:
        Begin
          pPkt^.Len := 3;
          Inc(pPkt^.Len, 1);
          FTRequestRec.FileName := GetLNTS(pPkt);
          GetLNTS(pPkt);
          FTRequestRec.FileSize := GetLInt(pPkt, 4);
          FTPos := 0;
          EventType := DCEVENT_OnFTStart;
          If Assigned(fOnDCEvent) Then
            fOnDCEvent(Self);
          pPkt^.Len := PktLen;
          Result := False;
        End;
      PEER_FILE_DATA:
      Begin
        DataPacketLen := aPktLen -1;
        Inc(FTPos, DataPacketLen);
        IsLastPacket := Not (FTPos < FTRequestRec.FileSize);
        PDataPacket := Ptr(LongWord(pPkt) + 3);
        EventType := DCEVENT_OnFTFileData;
        If Assigned(fOnDCEvent) then
          fOnDCEvent(Self);
        If IsLastPacket and (FTStartRec.FilesCount = 1) then
          CSck.Disconnect;    //Last File Dissconnect
        Result := True;
      End;
    Else
      Result := False;
    End;

End;

//****************************************************************************//
{ TicqDCSendFile }
Constructor TicqDCSendFile.Create(MyUIN, aUIN: LongWord; aFileRec:TSendFileRec);
Begin
  Inherited Create(MyUIN);
  pDataPacket := @fPkt;

  fRemUIN := aUIN;

  tmrSend := TThreadTimer.Create;
  tmrSend.Interval := 1;
  tmrSend.OnTimer  := OnSendTimer;

  fConnectionFinished := False;
  fTransfering := False;
  fAborted := False;

  CSck := TMySocket.Create;
  CSck.OnConnectError := OnSockConnectError;
  CSck.OnDisconnect   := OnSFDisconnect;
  Csck.OnConnectProc  := OnSFConnect;
  CSck.OnReceiveProc  := OnReceive;
  CSck.OnDataSent     := OnDataSent;

  With SendFileRecord Do Begin
    SendFileRecord.Uin := aFileRec.UIN;
    Nick      := aFileRec.Nick;
    Seq       := aFileRec.Seq;
    FilesCount:= aFileRec.FilesCount;
    FilePath  := aFileRec.FilePath;
    FileName  := aFileRec.FileName;
    FileDescription := aFileRec.FileDescription;
    FileSize  := aFileRec.FileSize;
    TotalSize := aFileRec.TotalSize;
    SendFileRecord.Port := fRemPort;;
    Speed := aFileRec.Speed;
    Files := aFileRec.Files;
  End;
End;

Procedure TIcqDCSendFile.OnSFDisconnect(Sender: TObject);
Begin
  If Not fTransfering then exit;
  fTransfering := False;
  fAborted := True;
  EventType := DCEVENT_OnSendFileFinish;
  If Assigned(fOnDCEvent) then
    fOnDCEvent(Self);

  OnSockError(Self);
End;

Destructor TicqDCSendFile.Destroy;
Begin
  tmrSend.Free;
  inherited Destroy;
End;

Procedure TicqDCSendFile.OnDataSent(Sender: TObject);
Begin
  If fConnectionFinished then
    fTransfering := False;
End;

procedure TicqDCSendFile.OnSendTimer(Sender: TObject);
Var
  lPkt:TRawPkt;
Begin
  // Send Data;
  tmrSend.Enabled := False;

  If Not CSck.Connected then Exit;
  If IsLastPacket then Begin
    fConnectionFinished := True;
    DataPacketLen := 0;
    EventType := DCEVENT_OnSendFileData;
    If Assigned(fOnDCEvent) then Begin
      fOnDCEvent(Self);
    End;
    Inc(SendFileRecord.FilesCurrent);
    EventType := DCEVENT_OnSendFileFinish;
    If Assigned(fOnDCEvent) Then
      fOnDCEvent(Self);
    If SendFileRecord.Files.Count > SendFileRecord.FilesCurrent then Begin
      With SendFileRecord Do Begin
        FileName := ExtractFileName(Files[FilesCurrent]);
        FilePath := ExtractFilePath(Files[FilesCurrent]);
        FileSize := ICQWorks.FileSize(Files[FilesCurrent]);
      End;
      IsLastPacket := False;
      EventType := DCEVENT_OnSendFileStart;
      If Assigned(fOnDCEvent) Then
        fOnDCEvent(Self);

      CreatePEER_FILE_START(@lPkt, SendFileRecord.FileName, SendFileRecord.FileSize, SendFileRecord.Speed);
      SendData(@lPkt);
      exit;
    End;
    // No More Files
    CSck.Disconnect;
    Sleep(150);  // Give time for CSck to disconnect.
    fManager.DeleteDC(fpUser^.DCSendFile);
    Exit;
  End;
  EventType := DCEVENT_OnSendFileData;
  If assigned(fOnDCEvent) then Begin
    fOnDCEvent(Self);
    CreatePEER_FILE_DATA(@lPkt, PDataPacket, DataPacketLen);
    SendData(@lPkt);
    tmrSend.Enabled := True;;
  End;
End;

procedure TicqDCSendFile.OnSFConnect(Sender: TObject);
Var
  lPkt:TRawPkt;
Begin
//  fpUser^.IsConnected := True;
  fConnectionFinished := False;
  fTransfering := False;
  fAborted := False;
  fPeerReady := False;
    CreatePEER_INIT(@lPkt, fpUser^.Cookie, fRemUIN, MyUIN, fPort, fManager.ExtIP, fManager.IntIP, fManager.fProxyType);
    SendData(@lPkt);
End;


Function TicqDCSendFile.Start:Boolean;
Var
  inaddr: in_addr;
Begin
  InAddr.S_addr := fpUser^.ExtIP;
  Csck.Host := inet_ntoa(inaddr);
  CSck.Port := fRemPort;;
  SendFileRecord.Port := fpUser^.Port;
  CSck.Connect;
  EventType := DCEVENT_OnSendFileStart;
  If Assigned(fOnDCEvent) Then
    fOnDCEvent(Self);
  Result := True
End;

Procedure TicqDCSendFile.Stop;
Begin
  CSck.Disconnect;
End;

Function TicqDCSendFile.HandlePacket(pPkt: PRawPkt; PktLen:Integer):Boolean;
Var
  aPktLen:Integer;
  lPkt:TRawPkt;
Begin
  Result := True;
  // Handle Incoming Packet;
   If Assigned(fOnPktDump) Then
     fOnPktDump(Self, pPkt, PktLen, True, fpUser^.UIN);

    aPktLen := GetLint(pPkt, 2);
    Case GetInt(pPkt, 1) Of
       PEER_INIT:
         Begin
           CreatePEER_ACK(@lPkt);
           SendData(@lPkt);
           CreatePEER_FILE_INIT(@lPkt, SendFileRecord.FilesCount, SendFileRecord.FileSize, SendFileRecord.Speed, SendFileRecord.Nick);
           SendData(@lPkt);
           fPeerReady := True;
           Result := True;
         End;
       PEER_INIT2:
         Begin
           tmrSend.Enabled := True;
           Result := True;
         End;
       PEER_FILE_INITACK:
         Begin
           If fPeerReady then Begin
             CreatePEER_FILE_START(@lPkt, SendFileRecord.FileName, SendFileRecord.FileSize, SendFileRecord.Speed);
             SendData(@lPkt);
             Result := True;
           End;
         End;
      PEER_MSG:
        Begin
          // Pass Pkt back to ICQClient for handling.
          pPkt^.Len := PktLen;  // Set Len to Size of Pkt for Decryption.
          Result := False;
        End;
    Else
      Result := False;
    End;
End;

//****************************************************************************//
{ TicqDCChat }
end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区99| 国产欧美久久久精品影院| 亚洲国产精品精华液2区45| 亚洲国产日产av| 成人三级伦理片| 欧美tk丨vk视频| 亚洲成人在线免费| 在线观看免费亚洲| 亚洲丝袜制服诱惑| 国产成人午夜精品5599| 欧美一区二区三区视频免费播放 | 国产麻豆精品久久一二三| 色视频欧美一区二区三区| 国产精品午夜春色av| 国产精品99久久不卡二区| 精品国产百合女同互慰| 麻豆精品视频在线| 欧美一区二区三区免费视频| 亚洲韩国一区二区三区| 在线一区二区三区四区五区| 亚洲图片另类小说| 欧美亚洲精品一区| 亚洲国产成人av好男人在线观看| 99久久综合色| 亚洲精品视频一区| 欧美色欧美亚洲另类二区| 亚洲一区视频在线观看视频| 欧美吻胸吃奶大尺度电影| 日韩电影在线观看一区| 精品国产乱码91久久久久久网站| 国产综合久久久久久久久久久久| 精品国一区二区三区| 成人动漫一区二区三区| 亚洲男人的天堂在线aⅴ视频| 精品在线播放免费| 国产日韩欧美a| 欧美在线|欧美| 韩国av一区二区| 亚洲最大成人综合| 精品国产凹凸成av人导航| 97久久精品人人爽人人爽蜜臀| 香蕉久久夜色精品国产使用方法 | 精品免费日韩av| 亚洲激情图片qvod| 精品国产区一区| 99精品欧美一区| 日韩精品一二区| 国产精品灌醉下药二区| 欧美日韩国产片| 91福利视频久久久久| 国产精品自拍一区| 日韩精品一二三四| 亚洲一区电影777| 国产三级精品视频| 亚洲精品在线三区| 91麻豆精品91久久久久同性| 色综合久久久久综合体| 韩国一区二区视频| 亚洲成人黄色影院| 亚洲黄色片在线观看| 亚洲欧美日韩国产另类专区 | 成人毛片在线观看| 国产精品一区二区视频| 国产一区二区剧情av在线| 久久国产乱子精品免费女| 一区二区三区在线视频免费观看| 精品国产乱子伦一区| 久久久国产午夜精品| 久久久久成人黄色影片| 精品少妇一区二区三区在线视频 | 日本在线播放一区二区三区| 亚洲高清一区二区三区| 亚洲第一综合色| 亚洲成人动漫在线观看| 日韩电影一区二区三区四区| 久久精品噜噜噜成人88aⅴ| 麻豆精品视频在线| 粉嫩嫩av羞羞动漫久久久| 成人av资源网站| 欧美日韩在线播放三区| 日韩精品专区在线影院观看| 日本一区二区三区四区| 亚洲欧洲色图综合| 亚洲bdsm女犯bdsm网站| 美日韩一区二区三区| 国产激情91久久精品导航 | 精品精品国产高清a毛片牛牛| 中文字幕精品一区二区精品绿巨人| 一区二区三区在线播放| 久久电影网站中文字幕 | 日韩vs国产vs欧美| 精品在线一区二区| 波多野结衣91| 91精品免费观看| 一个色综合av| 激情文学综合丁香| 国产91精品久久久久久久网曝门 | eeuss鲁片一区二区三区在线观看| 在线一区二区三区做爰视频网站| 精品国产露脸精彩对白| 亚洲国产人成综合网站| 国内外成人在线| 一区二区三区在线观看国产| 日韩影视精彩在线| aa级大片欧美| 中文字幕电影一区| 久久99精品久久久久久国产越南 | 久久久久久久av麻豆果冻| 亚洲午夜激情网站| 麻豆免费看一区二区三区| 在线观看成人免费视频| 亚洲精品第一国产综合野| av不卡在线观看| 国产精品福利影院| 91原创在线视频| 亚洲美女在线一区| 欧美伊人久久久久久久久影院 | 久久99久久久欧美国产| 欧美一级高清片在线观看| 另类的小说在线视频另类成人小视频在线 | aa级大片欧美| 午夜精品久久久久久久99樱桃| 在线观看日韩国产| 国产精品乱码妇女bbbb| 成人精品视频一区二区三区 | 欧美大度的电影原声| 男人的天堂亚洲一区| 久久一二三国产| 99视频在线精品| 五月激情六月综合| 欧美v日韩v国产v| 成人av午夜电影| 26uuu国产电影一区二区| 成人sese在线| 美脚の诱脚舐め脚责91| 中文字幕一区二区三区蜜月| 欧美性色综合网| 国产精品456| 亚洲图片有声小说| 中文字幕免费不卡| 欧美精品乱码久久久久久按摩 | 久久午夜电影网| 欧美日韩一级片在线观看| 国产一区免费电影| 亚洲图片欧美综合| 国产精品剧情在线亚洲| 欧美日韩黄视频| 97超碰欧美中文字幕| 一区二区三区日韩精品视频| 日韩一级二级三级精品视频| 国产综合成人久久大片91| 亚洲成av人片在线观看无码| 亚洲欧洲国产日韩| 国产精品国产三级国产普通话三级 | 亚洲亚洲人成综合网络| 国产亚洲一区二区三区四区 | 美国av一区二区| 午夜精品一区二区三区电影天堂 | 在线欧美小视频| 色网站国产精品| 在线看不卡av| 91美女视频网站| 91美女在线观看| 成人一区在线观看| zzijzzij亚洲日本少妇熟睡| www.亚洲国产| 欧美日韩综合在线| 久久精品综合网| 一区二区三区蜜桃| 国产乱码精品一区二区三区五月婷 | 国产欧美一区二区精品性| 亚洲欧美色图小说| 久久国产精品99久久久久久老狼| 国产精品夜夜嗨| 精品视频123区在线观看| 久久精品一级爱片| 亚洲精品菠萝久久久久久久| 国内国产精品久久| 欧美性大战久久久久久久蜜臀| 欧美va亚洲va| 婷婷开心激情综合| 99视频有精品| 国产夜色精品一区二区av| 五月天精品一区二区三区| 91麻豆免费在线观看| 久久久久国产一区二区三区四区 | 欧美另类一区二区三区| 国产精品国产三级国产普通话蜜臀 | 免费视频一区二区| 欧美日韩国产区一| 亚洲精品免费一二三区| 成人av网在线| 国产欧美在线观看一区| 国产真实乱对白精彩久久| 9191国产精品| 视频一区在线播放| 欧美日韩视频不卡| 日韩国产高清在线| 欧美一区二区三区视频| 免费精品视频在线|