手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

TCP/IP(八)

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

(*@\\\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*)

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!