摘要载入中…    请稍等…












内容载入中…    请稍等…

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

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术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系统文件
◎→ 热门资源
用Delphi 5.0编写在线播放器
一个可以靠右显示的简单Edit控件
一个判断定文件是否为文本文件的
一个群发邮件的DELPHI代码
一个实用的Delphi屏幕拷贝程序的
Deiphi编写的身份证效验程序
Deiphi编写的身份证效验程序

用Delphi 5.0实现网络通信


日期:2008-10-20 21:44:09    来源:互联网
   
 ·用Delphi 5.0编写在线播放器 ·如何Delphi中操纵拨号网络
 ·JavaScript和Flash间的通信
您正在看的Delphi教程是:用Delphi 5.0实现网络通信


南京航空航天大学 牛新庄 丁宗红

Delphi是一种面向对象的可视化应用程序开发工具。Delphi 5.0中包含了一组Internet组件,用于创建Client/Server应用程序,实现基于Windows Socket(简称WinSock)的编程,访问HTTP、UDP、FTP、SMTP、POP3和NNTP等服务。
Delphi 5.0通过Windows提供的Socket进行消息传递,但它不需要直接与WinSock的API打交道,因为通信组件已经封装了WinSock的大部分API,使得对WinSock的访问大为简化。WinSock定义了一个基于Microsoft Windows环境的网络编程接口,应用程序开发商可以在此平台上编制通用的网络软件。WinSock还提供了对应用程序之间服务质量的控制,可以通过协商来建立所需的连接质量。
网络通信组件
网络通信组件一般是基于TCP/IP协议基础上,人们可以利用这些组件设计基于Client/Server模式的应用程序。通常,用于通信的组件总是成对的,如ClientSocket和ServerSocket、NMMsg和NMMSGServ等。
NMMsg和NMMSGServ组件主要用于通过Internet或Intranet发送简单的ASCII码文本消息,它们必须成对使用。当通信的双方只需要传送简单的消息而不需要进行大量数据的传送或复杂的交互通信时,使用NMMsg和NMMSGServ非常方便。发送消息时,使用NMMsg组件,接收其他计算机发来的消息时,则使用NMMSGServ组件。
  1.NMMsg组件的属性
  From Name:发送消息的计算机名称;
  Host:目的地的计算机名称,或主机名或IP地址;
  LocalIP:本地计算机的IP地址;
  Port:在消息传递之前必须先连接该端口,缺省值是6711;
  ReportLevel:该属性指定在消息传递时“Status”属性和OnStatus事件返回内容的详细级别;
  Status:只读属性,返回在OnStatus事件中消息通过时的最后状态消息;
  TimeOut:指定等待响应的时间,单位是毫秒;
  WSAInfo:只读属性,返回当前使用的WinSock版本号和销售商。
  属性设置好后,可通过调用NMMsg组件的方法来实现消息的发送。Abort方法可以放弃正在操作的消息传送,并断开客户机与服务器的连接。Create方法为NMMsg创建一个实例。
  2.NMMsg组件的事件
  OnConnect:该事件在客户机与服务器连接成功时被调用;
  OnConnectFailed:该事件在客户机与服务器连接失败时被调用;
  OnDisconnect:该事件在客户机断开与服务器的连接时被调用;
  OnHostResolved:找到远程主机的IP地址时,调用该事件,如果远程主机非法,则调用OnInvalidHost事件;
  OnMessageSent:当一个消息成功地传送到远程主机时,该事件被调用;
  OnStatus:每次从服务器传来消息时,该事件被激活,传来的内容包含在Status字符串中,同时,Status属性的值也被更新。
  NMMSGServ组件的设置与NMMsg组件的类似,不再赘述。
应用实例
笔者参加某国际机场航班消息管理系统的开发时,负责其中的“航班消息指挥系统”的设计开发。机场的网络系统由机场的各个部门与机场指挥中心连接而成,网络操作系统是Windows NT 5.0。整个系统开发采用Delphi 5.0作为开发平台,后台数据库采用IBM DB2 5.2网络数据库。系统的工作模式是由机场指挥中心的服务器发布有关航班消息,把消息传送到机场所属部门的计算机上,机场下属部门收到消息后再返回一条响应消息。因此,机场下属部门的计算机与机场指挥中心服务器的通信只需要简单的消息传送即可,所以笔者在设计该系统时采用了NMMsg和NMMSGServ组件。
当机场下属部门发送消息时,调用客户机程序的NMMsg组件的PostIt方法把消息传到机场指挥中心。部分程序代码如下:
  procedure Tlxgq.BitBtn2Click(Sender:TObject);
   begin
   {animate1.active:=true;}
//机场指挥中心IP地址
   NMMsg1.Host:=‘192.168.1.1’;
//机场配载部门
   NMMsg1.FromName:=‘192.168.1.100’;
   NMMsg1.PostIt(‘192.168.1.100 # HU-122开始加油’);
   end;
机场指挥中心收到消息后,调用服务器端程序NMMSGServ的ClientContact事件,自动传送消息到相应的机场下属部门。部分处理代码如下:
procedure Tmtvserver.NMMSGServ1ClientContact(Sender:TObject);
   begin
   NMMsgServ1,ReportLevel:=Status_Basic;
   NMMsgServ1.TimeOut:=90000;
   StatusBar1.SimpleText:=‘Client connected,
now is listening……’;
   tablel.close;
   tablel.open;
   {query1.Close;
   queryl.SQL.clear;
   queryl.sql.add(‘select*from hbfsxxb where
fsbz is ‘F’’);
    //hbfsxxb表示航班发送消息表,fsbz表示发送消息标志字段,该字段有两个值‘T’和‘F’。缺省为‘F’,表示消息没有发送
   query1.open;}
   end;
调用服务器端程序的NMMSGServ的MSG事件可以发送消息的IP地址,因此,可以在机场指挥中心把这个消息发送到机场下属的各个部门。当机场下属部门收到机场指挥中心的消息时,激活客户机程序的NMMSGServ组件的事件把消息添加到Memo1中。
procedure Tlxgq.NMMSGServ1MSG(Sender:TComponent;const sFrom,sMsg:String);
   begin
   Memo1.Lines.Add(sFrom+‘:’+sMsg);
   End;
小 结
无论是客户机程序还是服务器程序,都要使用NMMsg和NMMSGServ两个组件。发送消息时调用NMMsg组件的有关方法和事件,发送完毕即断开连接;接收消息则调用NMMSGServ组件的有关方法和事件,它监听TCP/IP网络上其他计算机的连接请求,收到请求时就建立连接,连接成功后就开始接收消息,接着又继续监听其他客户机的连接请求。因此,可以同时建立多个连接,实现与多客户的通信。
Delphi 5.0中网络通信组件是建立在WinSock基础上的,不要求开发者编制接口程序,可以快速地开发出实际应用系统中的网络通信程序。当通信的双方只需要进行简单的消息传递而不需要进行复杂的交互通信时,采用NMMsg和NMMSGServ组件实现通信是比较合适的,既简单又行之有效。

 [1]

一个群发邮件的DELPHI代码

动态取得网络邻居的工作组和计算机名

基于Win95的VB5串口通信程序

--->QQLive(QQ直播) V3.5.5.2332┊新型的网络QQ直播软件┊简体中文绿色免费版
--->网络搜图王 V1.25
--->网络电影王 V2.33
--->网络传送带(Net Transport)原影音传送带 V2.40┊右键关联下载功能┊绿色版
--->PicaLoader V1.46┊网络抓图好帮手、全自动化支持多线程下载┊汉化绿色特别
Tags:  Delphi 网络 通信
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们