求救!! 安装目录>>demo>>里有,自己找找看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Delphi编写聊天程序 胡勇智 喜欢上网的朋友一定对聊天软件不陌生(如ICQ和QQ),千里之外的一句问候,瞬间便展现在你眼前,对于许多朋友来说,真的很神奇!网上聊天的实质是数据在联网的两台(或多台)主机之间的传输,要编程实现它,似乎有一定的难度。但利用Delphi提供的TNMUDP构件,我们可以在不深入了解太多网络知识的前提下,编写一个网上聊天软件的雏形。 基本知识 TNMUDP构件采用UDP协议,通过Internet或Intranet来发送数据包。UDP协议是一种面向无连接的协议,它传送的数据包前后独立,没有顺序关系,很容易实现应用程序之间的对等通信。在安全性方面,UDP协议不如TCP协议,但它效率更高,更适合编写聊天程序。 TNMUDP构件位于Delphi构件板的FastNet页中,有以下一些重要的属性: LocalPort指在本地机上TNMUDP构件发送和接收数据的端口号,一般设一个大于1024的整数; RemoteHost指欲接收数据的远端主机的IP地址或主机名; RemotePort指欲接收数据的远端主机所使用的端口号; 设置完成后,可以利用SendBuffer方法或SendStream方法,将数据发送到指定的远端主机;如数据包从远端送到,就会触发DataReceived事件,此时可以用ReadBuffer方法或ReadStream方法来接收数据。 程序实现 如图1所示,在窗体内放置一备注框“Memo1”,用于显示双方的聊天信息,其ReadOnly属性为True,ScrollBars属性为ssVertical;用一个文本输入框“Edit1”来输入自己的聊天语句;用另一个文本输入框“Edit2”来输入对方主机的IP地址;再设一个按钮“Button1”,用来发送数据,其Caption属性为“发送”。当然,别忘了将TNMUDP构件加入到窗体中,由于程序要同时运行在本地主机和远端主机上,故TNMUDP构件的LocalPort属性和RemotePort属性应设为相同的值,例如可都定为“1221”;RemoteHost属性在运行时确定。下面是具体的代码和注释: 图1 implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var MyStream:TMemoryStream; //定义一个TMemoryStream类型的变量 s:string; begin Nmudp1.RemoteHost:=Edit2.Text; //指定远端主机的IP地址 s:=Edit1.Text; if s<>'' then //当输入的内容不为空时发送数据 begin MyStream:=TMemoryStream.Create; //创建变量 MyStream.Write(s[1],Length(s)); //将变量s中的内容写入MyStream Nmudp1.SendStream(MyStream); //发送数据 MyStream.Free; //释放变量 Edit1.Text:=''; //清空输入框 Memo1.Lines.Add(s); //语句s显示在Memo1中 end; end; procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); var MyStream:TMemoryStream; s:string; begin MyStream:=TMemoryStream.Create; Nmudp1.ReadStream(MyStream); //接收数据 SetLength(s,NumberBytes); //为s分配存储空间,参数NumberBytes表示传送到的字符串的长度 MyStream.Read(s[1],NumberBytes); //把串存入s中 MyStream.Free; Edit2.Text:=FromIP; //参数FromIP代表远端主机的IP地址 Memo1.Lines.Add(s); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then Button1Click(Sender); //在输入框中按回车键相当于单击“发送”按钮 end; 将程序编译完成后,找两台联网的电脑,在其中一台的“控制面板→网络→TCP/IP→属性”中查到其IP地址(如198.203.0.22);同时运行本程序,在另一台电脑的“对方IP地址”框中填入查到的地址,输入想说的话,单击发送按钮。OK,聊天就开始啦! 10年DELPHI开发,离开北京低价旧书 存数据,要能在模板里用的 多表提交的问题, 字符串转换 看<<DELPHI5开发人员指南>>好,还是看<<DELPHI6开发人员指南>>好???????? 怎么能分辨出单双数,然后显示在label上呢? 怎樣在主表"取消" 時 對"從表","從從表"的操作回滾 请问一个简单的数据库问题?? 怎样判断一个字符串为全部为数字 在delphi中使用ADO 刚下了一个例子,dao+access,打不开access2k的数据库?access97ok 希望能与大家合作
基本知识
TNMUDP构件采用UDP协议,通过Internet或Intranet来发送数据包。UDP协议是一种面向无连接的协议,它传送的数据包前后独立,没有顺序关系,很容易实现应用程序之间的对等通信。在安全性方面,UDP协议不如TCP协议,但它效率更高,更适合编写聊天程序。 TNMUDP构件位于Delphi构件板的FastNet页中,有以下一些重要的属性: LocalPort指在本地机上TNMUDP构件发送和接收数据的端口号,一般设一个大于1024的整数; RemoteHost指欲接收数据的远端主机的IP地址或主机名; RemotePort指欲接收数据的远端主机所使用的端口号; 设置完成后,可以利用SendBuffer方法或SendStream方法,将数据发送到指定的远端主机;如数据包从远端送到,就会触发DataReceived事件,此时可以用ReadBuffer方法或ReadStream方法来接收数据。
程序实现
如图1所示,在窗体内放置一备注框“Memo1”,用于显示双方的聊天信息,其ReadOnly属性为True,ScrollBars属性为ssVertical;用一个文本输入框“Edit1”来输入自己的聊天语句;用另一个文本输入框“Edit2”来输入对方主机的IP地址;再设一个按钮“Button1”,用来发送数据,其Caption属性为“发送”。当然,别忘了将TNMUDP构件加入到窗体中,由于程序要同时运行在本地主机和远端主机上,故TNMUDP构件的LocalPort属性和RemotePort属性应设为相同的值,例如可都定为“1221”;RemoteHost属性在运行时确定。下面是具体的代码和注释:
图1 implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var MyStream:TMemoryStream; //定义一个TMemoryStream类型的变量 s:string; begin Nmudp1.RemoteHost:=Edit2.Text; //指定远端主机的IP地址 s:=Edit1.Text; if s<>'' then //当输入的内容不为空时发送数据 begin MyStream:=TMemoryStream.Create; //创建变量 MyStream.Write(s[1],Length(s)); //将变量s中的内容写入MyStream Nmudp1.SendStream(MyStream); //发送数据 MyStream.Free; //释放变量 Edit1.Text:=''; //清空输入框 Memo1.Lines.Add(s); //语句s显示在Memo1中 end; end; procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); var MyStream:TMemoryStream; s:string; begin MyStream:=TMemoryStream.Create; Nmudp1.ReadStream(MyStream); //接收数据 SetLength(s,NumberBytes); //为s分配存储空间,参数NumberBytes表示传送到的字符串的长度 MyStream.Read(s[1],NumberBytes); //把串存入s中 MyStream.Free; Edit2.Text:=FromIP; //参数FromIP代表远端主机的IP地址 Memo1.Lines.Add(s); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then Button1Click(Sender); //在输入框中按回车键相当于单击“发送”按钮 end; 将程序编译完成后,找两台联网的电脑,在其中一台的“控制面板→网络→TCP/IP→属性”中查到其IP地址(如198.203.0.22);同时运行本程序,在另一台电脑的“对方IP地址”框中填入查到的地址,输入想说的话,单击发送按钮。OK,聊天就开始啦!