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

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

?? idnntp.pas

?? delphi indy9.0.18組件包
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
      Path

    These Headers may work... They are optional per RFC1036 and new headers can
    be added at any time as server implementation changes

      Reply-To
      Sender
      Followup-To
      Expires
      References
      Control
      Distribution
      Organization
      Keywords
      Summary
      Approved
      Lines
      Xref
    }
  SendCmd('XHDR ' + AHeader + ' ' + AParam, 221);
  Capture(AResponse);
end;

procedure TIdNNTP.SelectGroup(const AGroup: string);
var
  s: string;
begin
  SendCmd('Group ' + AGroup, [211]);
  s := LastCmdResult.Text[0];
  FlMsgCount := StrToCard(Fetch(s));
  FlMsgLow := StrToCard(Fetch(s));
  FlMsgHigh := StrToCard(Fetch(s));
end;

{ This method will send messages via the IHAVE command.
The IHAVE command first sends the message ID and waits for a response from the
server prior to sending the header and body. This command is of no practical
use for NNTP client readers as readers are generally denied the privelege
to execute the IHAVE command. this is a news transport command. So use this
when you are implementing a NNTP server send unit }

procedure TIdNNTP.IHAVE(AMsg: TStringList);
var
  i     : Integer;
  MsgID : string;
begin
//TODO: Im not sure this fucntion works properly - needs checked
// Why is it not using a TIdMessage?
  // Since we are merely forwarding messages we have already received
  // it is assumed that the required header fields and body are already in place

  // We need to get the message ID from the stringlist because it's required
  // that we send it s part of the IHAVE command
  for i := 0 to AMsg.Count - 1 do
    if IndyPos('Message-ID',AMsg.Strings[i]) > 0 then begin
      MsgID := AMsg.Strings[i];
      Fetch(MsgID,':');
      Break;
    end;
  SendCmd('IHAVE ' + MsgID, 335);
  WriteRFCStrings(AMsg);
  // Why is the response ignored? What is it?
  Readln;
end;

(*
1.1.1  The CHECK command

   CHECK <message-id>

   CHECK is used by a peer to discover if the article with the specified
   message-id should be sent to the server using the TAKETHIS command.
   The peer does not have to wait for a response from the server before
   sending the next command.

   From using the responses to the sequence of CHECK commands, a list of
   articles to be sent can be constructed for subsequent use by the
   TAKETHIS command.

   The use of the CHECK command for streaming is optional.  Some
   implementations will directly use the TAKETHIS command and send all
   articles in the send queue on that peer for the server.

   On some implementations, the use of the CHECK command is not
   permitted when the server is in slave mode (via the SLAVE command).

   Responses that are of the form X3X must specify the message-id in the
   response.

1.1.2.  Responses

      238 no such article found, please send it to me
      400 not accepting articles
      431 try sending it again later
      438 already have it, please don't send it to me
      480 Transfer permission denied
      500 Command not understood
*)
procedure TIdNNTP.Check(AMsgIDs: TStringList; var AResponses: TStringList);
var
  i: Integer;
begin
  if not Assigned(AResponses) then begin
    raise EIdNNTPStringListNotInitialized.Create(RSNNTPStringListNotInitialized);
  end;
  for i := 0 to AMsgIDs.Count - 1 do begin
    WriteLn('CHECK '+ AMsgIDs.Strings[i]);
  end;
  for i := 0 to AMsgIDs.Count - 1 do begin
    AResponses.Add(ReadLn)
  end;
end;

(*
1.3.1  The TAKETHIS command

   TAKETHIS <message-id>

   TAKETHIS is used to send articles to a server when in streaming mode.
   The entire article (header and body, in that sequence) is sent
   immediately after the peer sends the TAKETHIS command.  The peer does
   not have to wait for a response from the server before sending the
   next command and the associated article.

   During transmission of the article, the peer should send the entire
   article, including header and body, in the manner specified for text
   transmission from the server.  See RFC 977, Section 2.4.1 for
   details.

   Responses that are of the form X3X must specify the message-id in the
   response.

1.3.2.  Responses

      239 article transferred ok
      400 not accepting articles
      439 article transfer failed
      480 Transfer permission denied
      500 Command not understood
*)
function TIdNNTP.TakeThis(const AMsgID: string; AMsg: TStream): string;
// This message assumes AMsg is "raw" and has already taken care of . to ..
begin
  SendCmd('TAKETHIS ' + AMsgID, 239);
  WriteStream(AMsg);
  WriteLn('.');
end;

(*
3.10.  The POST command

3.10.1.  POST

   POST

   If posting is allowed, response code 340 is returned to indicate that
   the article to be posted should be sent. Response code 440 indicates
   that posting is prohibited for some installation-dependent reason.

   If posting is permitted, the article should be presented in the
   format specified by RFC850, and should include all required header
   lines. After the article's header and body have been completely sent
   by the client to the server, a further response code will be returned
   to indicate success or failure of the posting attempt.

   The text forming the header and body of the message to be posted
   should be sent by the client using the conventions for text received
   from the news server:  A single period (".") on a line indicates the
   end of the text, with lines starting with a period in the original
   text having that period doubled during transmission.

   No attempt shall be made by the server to filter characters, fold or
   limit lines, or otherwise process incoming text.  It is our intent
   that the server just pass the incoming message to be posted to the
   server installation's news posting software, which is separate from
   this specification.  See RFC850 for more details.

   Since most installations will want the client news program to allow
   the user to prepare his message using some sort of text editor, and
   transmit it to the server for posting only after it is composed, the
   client program should take note of the herald message that greeted it
   when the connection was first established. This message indicates
   whether postings from that client are permitted or not, and can be
   used to caution the user that his access is read-only if that is the
   case. This will prevent the user from wasting a good deal of time
   composing a message only to find posting of the message was denied.
   The method and determination of which clients and hosts may post is
   installation dependent and is not covered by this specification.

3.10.2.  Responses

   240 article posted ok
   340 send article to be posted. End with <CR-LF>.<CR-LF>
   440 posting not allowed
   441 posting failed

   (for reference, one of the following codes will be sent upon initial
   connection; the client program should determine whether posting is
   generally permitted from these:) 200 server ready - posting allowed
   201 server ready - no posting allowed
*)
procedure TIdNNTP.Post(AMsg: TIdMessage);
begin
  SendCmd('POST', 340);
  //Header
  if Length(NewsAgent) > 0 then begin
    AMsg.ExtraHeaders.Values['X-Newsreader'] := NewsAgent;
  end;
  SendMsg(AMsg);
  SendCmd('.', 240);
end;

procedure TIdNNTP.Post(AStream: TStream);
begin
  SendCmd('POST', 340);
  WriteStream(AStream);
  GetResponse(240);
end;

procedure TIdNNTP.ProcessGroupList(const ACmd: string; const AResponse: integer;
 const AListEvent: TEventNewsgroupList);
var
  s1, sNewsgroup: string;
  lLo, lHi: Integer;
  sStatus: string;
  LCanContinue: Boolean;
begin
  BeginWork(wmRead, 0); try
    SendCmd(ACmd, AResponse);
    s1 := ReadLn;
    LCanContinue := True;
    while (s1 <> '.') and LCanContinue do
    begin
      ParseNewsGroup(s1, sNewsgroup, lHi, lLo, sStatus);
      AListEvent(sNewsgroup, lLo, lHi, sStatus, LCanContinue);
      s1 := ReadLn;
    end;
  finally
    EndWork(wmRead);
  end;
end;

procedure TIdNNTP.GetNewsgroupList;
begin
  if not Assigned(FOnNewsgroupList) then begin
    raise EIdNNTPNoOnNewsgroupList.Create(RSNNTPNoOnNewsgroupList);
  end;
  ProcessGroupList('LIST', 215, FOnNewsgroupList);
end;

procedure TIdNNTP.GetNewGroupsList(const ADate: TDateTime; const AGMT: boolean;
 const ADistributions: string);
begin
  if not Assigned(FOnNewGroupsList) then begin
    raise EIdNNTPNoOnNewGroupsList.Create(RSNNTPNoOnNewGroupsList);
  end;
  ProcessGroupList('NEWGROUPS ' + ConvertDateTimeDist(ADate, AGMT, ADistributions), 231
   , FOnNewGroupsList);
end;

procedure TIdNNTP.GetNewNewsList(const ANewsgroups: string;
 const ADate: TDateTime; const AGMT: boolean; ADistributions: string);
var
  s1: string;
  CanContinue: Boolean;
begin
  if not Assigned(FOnNewNewsList) then begin
    raise EIdNNTPNoOnNewNewsList.Create(RSNNTPNoOnNewNewsList);
  end;

  BeginWork(wmRead,0); try
    SendCmd('NEWNEWS ' + ANewsgroups + ' ' + ConvertDateTimeDist(ADate, AGMT, ADistributions), 230);
    s1 := ReadLn;
    CanContinue := True;
    while (s1 <> '.') and CanContinue do begin
      FOnNewNewsList(s1, CanContinue);
      s1 := ReadLn;
    end;
  finally
    EndWork(wmRead);
  end;
end;

(*
3.9.  The NEXT command

3.9.1.  NEXT

   NEXT

   The internally maintained "current article pointer" is advanced to
   the next article in the current newsgroup.  If no more articles
   remain in the current group, an error message is returned and the
   current article remains selected.

   The internally-maintained "current article pointer" is set by this
   command.

   A response indicating the current article number, and the message-id
   string will be returned.  No text is sent in response to this
   command.

3.9.2.  Responses

   223 n a article retrieved - request text separately
           (n = article number, a = unique article id)
   412 no newsgroup selected
   420 no current article has been selected
   421 no next article in this group
*)
function TIdNNTP.Next: Boolean;
begin
  Result := SendCmd('NEXT', [223, 421]) = 223;
end;

(*
3.5.  The LAST command

3.5.1.  LAST

   LAST

   The internally maintained "current article pointer" is set to the
   previous article in the current newsgroup.  If already positioned at
   the first article of the newsgroup, an error message is returned and
   the current article remains selected.

   The internally-maintained "current article pointer" is set by this
   command.

   A response indicating the current article number, and a message-id
   string will be returned.  No text is sent in response to this
   command.

3.5.2.  Responses

   223 n a article retrieved - request text separately
           (n = article number, a = unique article id)
   412 no newsgroup selected
   420 no current article has been selected
   422 no previous article in this group
*)
function TIdNNTP.Previous: Boolean;
begin
  Result := SendCmd('LAST', [223, 422]) = 223;
end;

function TIdNNTP.SelectArticle(const AMsgNo: Integer): Boolean;
begin
  Result := SendCmd('STAT ' + IntToStr(AMsgNo), [223, 423]) = 223;
end;

procedure TIdNNTP.GetNewsgroupList(AList: TStrings);
begin
  SendCmd('LIST', 215);
  Capture(AList);
end;

procedure TIdNNTP.GetNewGroupsList(const ADate: TDateTime; const AGMT: boolean;
 const ADistributions: string; AList: TStrings);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲摸摸操操av| 粉嫩av亚洲一区二区图片| 蜜桃av一区二区在线观看| 国产福利一区二区三区视频在线| 一本色道**综合亚洲精品蜜桃冫 | 欧美久久久久久久久中文字幕| www国产精品av| 日韩在线卡一卡二| 91麻豆免费观看| 欧美韩日一区二区三区四区| 蜜桃视频在线一区| 欧美日韩国产小视频| 亚洲视频小说图片| 丁香婷婷综合激情五月色| 日韩视频中午一区| 午夜精品久久一牛影视| 欧美影片第一页| 亚洲免费看黄网站| 成人免费看片app下载| xnxx国产精品| 国内欧美视频一区二区| 欧美夫妻性生活| 婷婷综合久久一区二区三区| 一本一道波多野结衣一区二区| 国产女同互慰高潮91漫画| 国产综合色视频| 久久网这里都是精品| 经典三级视频一区| 精品福利一二区| 国产一区 二区 三区一级| 久久综合九色综合97婷婷女人| 老司机午夜精品| 日韩欧美国产综合一区 | 中文字幕一区二区不卡| 成人久久18免费网站麻豆| 国产日韩亚洲欧美综合| 福利一区在线观看| 国产午夜久久久久| 国产成人精品www牛牛影视| 国产日产欧美一区| 成人av在线电影| 成人欧美一区二区三区1314 | 国产精品亚洲一区二区三区在线| 欧美va亚洲va香蕉在线| 激情都市一区二区| 国产精品免费网站在线观看| 99久久精品情趣| 亚洲男人电影天堂| 欧美另类久久久品| 久久成人麻豆午夜电影| 中文文精品字幕一区二区| 不卡视频一二三| 亚洲国产aⅴ成人精品无吗| 69av一区二区三区| 久久99国内精品| 国产精品嫩草影院av蜜臀| 在线观看网站黄不卡| 偷拍亚洲欧洲综合| 久久一区二区三区四区| 91蜜桃在线观看| 日韩av高清在线观看| 久久久精品免费网站| www.亚洲人| 午夜精品视频一区| 亚洲国产高清aⅴ视频| 91精彩视频在线观看| 免费在线观看一区二区三区| 国产色婷婷亚洲99精品小说| 91黄色激情网站| 韩国精品一区二区| 伊人婷婷欧美激情| 久久久久久久性| 欧美少妇一区二区| 国产成人av电影在线观看| 一二三区精品福利视频| 精品裸体舞一区二区三区| 色综合久久久网| 国精产品一区一区三区mba桃花 | 色视频一区二区| 日本不卡1234视频| 综合久久国产九一剧情麻豆| 日韩一区和二区| 色先锋久久av资源部| 国产精品中文字幕日韩精品 | 国产精品久久久久久久久免费相片| 在线观看日韩一区| 成人一级视频在线观看| 免播放器亚洲一区| 亚洲精品一二三四区| 国产日产欧美精品一区二区三区| 欧美片网站yy| 91女人视频在线观看| 国产在线麻豆精品观看| 三级欧美在线一区| 亚洲国产成人高清精品| 国产精品国产自产拍高清av王其| 欧美xxxx老人做受| 欧美一区二区在线免费播放| 日韩一级视频免费观看在线| 色一情一乱一乱一91av| 丁香婷婷综合色啪| 高清日韩电视剧大全免费| 激情久久久久久久久久久久久久久久| 偷偷要91色婷婷| 亚洲成人黄色影院| 亚洲一区二区精品久久av| 成人免费在线播放视频| 国产精品麻豆久久久| 国产喂奶挤奶一区二区三区| 久久综合精品国产一区二区三区| 制服丝袜日韩国产| 在线观看91av| 91精品国产品国语在线不卡| 欧美情侣在线播放| 4438亚洲最大| 91精品国产aⅴ一区二区| 欧美一级二级三级乱码| 日韩欧美国产高清| 精品av久久707| 久久综合丝袜日本网| 久久精品日韩一区二区三区| 久久亚洲私人国产精品va媚药| 欧美成人国产一区二区| 欧美大尺度电影在线| 久久久久久久av麻豆果冻| 久久一日本道色综合| 亚洲国产高清aⅴ视频| 亚洲色图欧美激情| 亚洲一二三区不卡| 亚洲成av人片在www色猫咪| 日韩电影一区二区三区| 久久精品国产久精国产爱| 九九热在线视频观看这里只有精品| 狠狠色综合播放一区二区| 丁香婷婷深情五月亚洲| 色综合久久66| 91精品福利在线一区二区三区| 精品国免费一区二区三区| 久久婷婷久久一区二区三区| 欧美国产综合一区二区| 一区二区三区久久| voyeur盗摄精品| 欧美日韩三级视频| 久久久亚洲精品石原莉奈| 国产精品午夜在线| 午夜亚洲福利老司机| 国产一区二区三区在线观看免费 | 欧美区一区二区三区| 欧美v日韩v国产v| 国产精品久久久爽爽爽麻豆色哟哟 | 3d成人h动漫网站入口| 精品欧美一区二区久久| 国产精品另类一区| 性久久久久久久| 风间由美性色一区二区三区| 欧洲色大大久久| 精品理论电影在线| 亚洲蜜臀av乱码久久精品蜜桃| 日韩综合一区二区| 懂色av一区二区三区免费看| 欧美又粗又大又爽| 久久久国产精华| 亚州成人在线电影| eeuss鲁一区二区三区| 日韩午夜精品电影| 一区二区不卡在线播放| 国产麻豆成人精品| 91精品欧美久久久久久动漫| 国产精品大尺度| 日韩黄色免费网站| 92精品国产成人观看免费 | 狠狠色丁香久久婷婷综合_中| 91小宝寻花一区二区三区| 亚洲国产精品一区二区久久| 国产精品一区三区| 777亚洲妇女| 亚洲综合激情另类小说区| 丰满放荡岳乱妇91ww| 日韩精品一区二区在线观看| 一区二区三区四区亚洲| 懂色av中文字幕一区二区三区 | 在线观看一区日韩| 国产精品欧美精品| 国产成人在线免费观看| 日韩欧美不卡一区| 日韩av中文在线观看| 日本乱人伦aⅴ精品| 亚洲国产精品成人久久综合一区| 精品一二三四在线| 91麻豆精品国产91久久久久久久久 | 99re在线视频这里只有精品| 久久在线观看免费| 久久电影网电视剧免费观看| 91.xcao| 亚洲网友自拍偷拍| 欧美亚洲综合另类| 亚洲一区二区欧美激情| 欧美色视频一区| 午夜久久电影网| 欧美日韩情趣电影|