TCP/IP(八)
2008-04-09 04:30:55来源:互联网 阅读 ()
(*@\\\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*)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash