摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:72845454
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi网络编程
◎→ 本类最新
远程程序运行状态的简单监控
在IE上增添一个按钮
在Delphi中实现ASP编程
在Delphi程序中应用IE浏览器控件
在DELPHI程序中拨号上网
用Delphi编写ASP的ActiveX服务器
用Delphi编写CGI程序返回图象
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
在Delphi7中实现停靠功能
在DELPHI中如何调用系统对话框
用Delphi来编写蠕虫病毒浅析
用Delphi编程实现清空回收站功能
DELPHI中的消息处理机制(1)
用Delphi编制趣味动画鼠标
资源文件的应用

用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)(2)


日期:2008-10-20 22:10:15    来源:
   
 ·在Delphi7中实现停靠功能 ·Photoshop制作著名即时通讯软件Skype的标志
 ·Delphi数据压缩处理(2) ·交换机检测、调试方法

用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)MailSource:array of TIdPOP3; //用于Mail Source的对象数组
MailTarget:array of TIdSMTP; //用于Mail Target的对象数组
fileSource:array of TFilePort; //用于File Source的对象数组
fileTarget:array of TFilePort; //用于File Target的对象数组
comSource:array of TCOMPort;//用于COM Source的对象数组
comTarget:array of TCOMPort; // 用于COM Target的对象数组
注:由于同一类型的用于Source和Target的Port运行规则的也完全不同,在Transceiver概念中被视为是完全不同并且无直接关系的对象。所以同一类型的Port,对象数组也按Source和Target分别建立。
iv. 运行时实例化对象数组
每一个对象数组的元素个数由Port Builder在运行时管理,如果用户通过Transceiver Console定义了一些某种类型的Port,Port Builder将按照其个数和各自参数实例化该对象数组。否则,该对象数组将不会被实例化。在Source类型的Port对象中,Name属性被设置为'Receive'+Port ID 的形式,在之后的数据接收触发中,这将有助于Data Dispatcher定位对象和对不同类型的Port对象进行统一调度。Tag属性被用来向Channel Controller提供其所在Channel的target ID信息。
以下是Port Builder中对comSource对象数组的实例化部分
begin //Create COM/ Receive Port
itmp:=high(comSource)+1;
// 获取comSource的当前最大个数,itmp为integer变量
SetLength(comSource,itmp+1); // 添加一个comSource数组成员
comSource [itmp]:=TCOMPort.Create(self);// 实例化成员
comSource[itmp].Name:= 'Receive'+inttostr(isource);
//设置Name属性为'Receive'+Port ID,isource为整型的当前PortID
comSource [itmp].Tag:= itarget;//设置为其所在Channel的target ID
NullTest:=rece.Fields['Address'].value;
//得到系统配置COMFace的值,NullTest为Variant变量
if (NullTest <>null) and (trim(NullTest)<>'') then
begin
comSource [itmp].ComFace:=NullTest; //将有效值赋与ComFace
NullTest:=rece.Fields['interval'].value;
//得到系统配置中COM对象获取数据的触发时间间隔
SetTimer(application.handle,isource,NullTest*60000,nil);
//为当前Port建立用于定时收取数据的触发时钟, isource为Port ID
end
else
comSource [itmp].Tag:=-1;//初始化失败,标识为无效Port
end;
comSource是用于在一定的时间间隔后对ComFace中定义的接口进行调用并获取数据的Source类Port,相应comTarget的实现与其类似,只是由于向comTarget的ComFace提交数据是一个实时过程,所以不需要用到触发间隔,省略建立时钟的两条语句即可。其它类型的Port对象创建和初始化大同小异。如,另一个MailTarget实现片段:
begin //Create SMTP/Send Port
itmp:=high(MailTarget)+1;
SetLength(MailTarget,itmp+1);
MailTarget[itmp]:=TIdSMTP.Create(self);
MailTarget[itmp].Name:=’send’+ inttostr(itarget);
MailTarget[itmp].Tag:=3;// 设置为Target Port类型标识
NullTest:=rece.Fields['Address'].value; //邮件服务器地址
if (NullTest <>null) and (trim(NullTest)<>'') then
MailTarget[itmp].Host :=NullTest
else bValid:=false;
NullTest:=rece.Fields['Port'].value; //邮件服务器端口
if NullTest <>null then
(if NullTest<>0 then MailTarget[itmp].Port :=NullTest)
else bValid:=false;
NullTest:=rece.Fields['user'].value;//登录用户名
if NullTest <>null then
MailTarget[itmp].UserId :=NullTest
else bValid:=false;
NullTest:=rece.Fields['password'].value;//登录口令
……………
……………
end;
或许你会有这样的疑惑  [1]

在DELPHI中如何调用系统对话框

红外通讯和无线资源

Delphi数据压缩处理(1)

交换机链路聚合实验

--->腾讯QQ IP数据库 2007.05.13┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->腾讯TM2007 AresCN版 V0.7.5.11┊以即时通讯为核心精简版 QQ┊纯净绿色特别版
--->腾讯QQ IP数据库 2007.05.06┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->腾讯QQ2006 Final AresCN Lite版┊以即时通讯为核心精简版QQ┊纯净绿色特别版
--->腾讯QQ2006 Final AresCN Lite版┊以即时通讯为核心精简版QQ┊纯净绿色特别版
Tags:  Delphi 通讯 数据 交换
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们