转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
TCP/IP(八)         ★★★★

TCP/IP(八)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1003 更新时间:2009/4/23 18:43:57

(*@\\\0000000601*)
(*@/// procedure t_nntp.GetArticleNr(index:integer);                     // ARTICLE *)
procedure t_nntp.GetArticleNr(index:integer);
begin
  if not f_logged_in then login;
  self.SendCommand(''''ARTICLE ''''+inttostr(index));
  self.response;
  f_news.clear;
  GetArticleInternally;
  end;
(*@\\\0000000401*)
(*@/// procedure t_nntp.SetCurrentArticle(index:integer);                // STAT *)
procedure t_nntp.SetCurrentArticle(index:integer);
begin
  if not f_logged_in then login;
  self.SendCommand(''''STAT ''''+inttostr(index));
  self.response;
  end;
(*@\\\0000000401*)
(*@/// procedure t_nntp.GetCurrentArticle;                               // HEAD and BODY *)
procedure t_nntp.GetCurrentArticle;
begin
  if not f_logged_in then login;
  f_news.clear;
  self.SendCommand(''''HEAD'''');
  GetArticleInternally;
  f_news.add('''''''');
  self.SendCommand(''''BODY'''');
  GetArticleInternally;
  end;
(*@\\\0000000401*)
(*@/// procedure t_nntp.GetNextArticle;                                  // NEXT *)
procedure t_nntp.GetNextArticle;
begin
  if not f_logged_in then login;
  self.SendCommand(''''NEXT'''');
  self.response;
  GetCurrentArticle;
  end;
(*@\\\0000000401*)
(*@/// procedure t_nntp.GetPreviousArticle;                              // LAST *)
procedure t_nntp.GetPreviousArticle;
begin
  if not f_logged_in then login;
  self.SendCommand(''''LAST'''');
  self.response;
  GetCurrentArticle;
  end;
(*@\\\0000000401*)

(*@/// procedure t_nntp.response; *)
procedure t_nntp.response;
var
  s: string;
begin
  s:=self.read_line(f_socket);
  if assigned(f_tracer) then
    f_tracer(s,tt_proto_get);
  try
    f_status_nr:=strtoint(copy(s,1,3));
  except
    f_status_nr:=999;
  end;
  f_status_txt:=copy(s,5,length(s));
  if f_status_nr>=400 then
    raise EProtocolError.Create(''''NNTP'''',f_status_txt,f_status_nr);
  end;
(*@\\\0000000D01*)
(*@/// procedure t_nntp.GetArticle(group:string; index:integer); *)
procedure t_nntp.GetArticle(const group:string; index:integer);
begin
  self.SendCommand(''''GROUP ''''+group);
  self.response;
  GetArticleNr(index);
  end;
(*@\\\0000000301*)
(*@/// procedure t_nntp.GetArticleInternally; *)
procedure t_nntp.GetArticleInternally;
var
  s: string;
begin
  while true do begin
    s:=read_line(f_socket);
    if s<>''''.'''' then
      f_news.add(s)
    else
      BREAK;
    end;
  end;
(*@\\\0000000611*)
(*@\\\0000000D01*)

{ Mail and News text components }
(*@/// class t_mailnews(tcomponent) *)
(*@/// constructor t_mailnews.Create(Aowner:TComponent); *)
constructor t_mailnews.Create(Aowner:TComponent);
begin
  inherited create(AOwner);
  f_body:=TStringList.Create;
  f_add_header:=TStringList.Create;
  f_message:=TStringList.Create;
  end;
(*@\\\0000000603*)
(*@/// destructor t_mailnews.Destroy; *)
destructor t_mailnews.Destroy;
begin
  f_body.Free;
  f_add_header.Free;
  f_message.Free;
  inherited destroy;
  end;
(*@\\\0000000503*)

(*@/// procedure t_mailnews.SetBody(Value: TStringList); *)
procedure t_mailnews.SetBody(Value: TStringList);
begin
  if value=NIL then
    f_body.clear
  else
    f_body.assign(value);
  end;
(*@\\\0000000603*)
(*@/// procedure t_mailnews.SetHeader(Value: TStringList); *)
procedure t_mailnews.SetHeader(Value: TStringList);
begin
  if value=NIL then
    f_add_header.clear
  else
    f_add_header.assign(value);
  end;
(*@\\\0000000603*)

(*@/// procedure t_mailnews.action; *)
procedure t_mailnews.action;
begin
  f_message.insert(0,''''From: ''''+f_from);           (* normally the first *)
  if f_sender<>'''''''' then  f_message.add(''''Sender: ''''+f_sender);
  f_message.insert(1,''''Message-ID: <''''+inttostr(round((now-encodedate(1970,1,1))*86400))+''''@''''
     +my_hostname+''''>'''');
  f_message.insert(2,''''Date: ''''+internet_date(now));
  f_message.insert(3,''''Subject: ''''+f_subject);
  if f_references<>'''''''' then  f_message.add(''''References: ''''+f_references);
  if f_replyto<>'''''''' then  f_message.add(''''Reply-To: ''''+f_replyto);
  f_message.addstrings(f_add_header);
  f_message.add('''''''');  (* An empty line to separate header from body *)
  f_message.addstrings(f_body);
  end;
(*@\\\0000000B01*)
(*@\\\0000000701*)
(*@/// class t_mail(t_mailnews) *)
(*@/// constructor t_mail.Create(Aowner:TComponent); *)
constructor t_mail.Create(Aowner:TComponent);
begin
  inherited create(AOwner);
  f_smtp:=NIL;
  f_receipts:=TStringList.Create;
  f_cc:=TStringList.Create;
  f_bcc:=TStringList.Create;
  end;
(*@\\\0000000601*)
(*@/// destructor t_mail.Destroy; *)
destructor t_mail.Destroy;
begin
  f_receipts.Free;
  f_cc.free;
  f_bcc.free;
  inherited destroy;
  end;
(*@\\\0000000601*)

(*@/// procedure t_mail.SetRecipients(Value: TStringList); *)
procedure t_mail.SetRecipients(Value: TStringList);
begin
  if value=NIL then
    f_receipts.clear
  else
    f_receipts.assign(value);
  end;
(*@\\\0000000603*)
(*@/// procedure t_mail.SetCC(Value: TStringList); *)
procedure t_mail.SetCC(Value: TStringList);
begin
  if value=NIL then
    f_cc.clear
  else
    f_cc.assign(value);
  end;
(*@\\\0000000609*)
(*@/// procedure t_mail.SetBCC(Value: TStringList); *)
procedure t_mail.SetBCC(Value: TStringList);
begin
  if value=NIL then
    f_bcc.clear
  else
    f_bcc.assign(value);
  end;
(*@\\\0000000601*)

(*@/// procedure t_mail.action; *)
procedure t_mail.action;
var
  i: integer;
  clear_sender: boolean;
begin
  if (f_smtp=NIL) or (f_receipts=NIL) or (f_receipts.count=0)
    or (f_from='''''''') then  EXIT;
  clear_sender:=(f_smtp.Sender='''''''');
  if clear_sender then begin
    if f_sender<>'''''''' then
      f_smtp.sender:=f_sender
    else
      f_smtp.sender:=f_from;
    end;

  if f_disclose_receipts then
    f_message.add(''''To: disclosed recipients list'''')
  else
    for i:=0 to f_receipts.count-1 do begin
      f_message.add(''''To: ''''+f_receipts.strings[i]);
      end;
  f_smtp.Recipients:=f_receipts;
  for i:=0 to f_cc.count-1 do begin
    f_message.add(''''CC: ''''+f_cc.strings[i]);
    f_smtp.Recipients.add(f_cc.strings[i]);
    end;
  for i:=0 to f_bcc.count-1 do begin
    f_smtp.Recipients.add(f_bcc.strings[i]);
    end;

  inherited action;
  f_smtp.message:=f_message;
  f_smtp.action;
  f_message.clear;
  if clear_sender then
    f_smtp.sender:='''''''';
  end;


[ORACLE]ORACLE SQL性能优化系列 (八)  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台