利用Delphi编写Socket通信程序
日期:2007年8月16日 作者: 查看:[大字体 中字体 小字体]-
3、双击ConnectItem,敲入以下代码。
procedure TChatForm.ConnectItemClick(Sender: TObject);
begin
if ClientSocket.Active then ClientSocket.Active := False;
if InputQuery(Computer to connect to, Address Name:, Server) then
if Length(Server) $#@62; 0 then
with ClientSocket do
begin
Host := Server;
Active := True;
ListenItem.Checked := False;
end;
end;
这段程序的主要功能就是当用户选择ConnectItem菜单项时,设置应用程序为客户机,弹出input框,让用户输入服务器的地址。这也就是我们不一开始固定ClientSocket的host的原因,这样用户可以动态地连接不同的服务器。读者需要了解的是主机地址只是Socket作为客户机时具有的一个属性,Socket作为服务器时“一般“不用地址,因为它同本机绑定。
4、在memo1的keydown方法中写入如下代码:procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
if IsServer then
ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1])
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
end;
该段代码的作用很明显,就是开始发消息了。其中如果是Server的话,它只向第一个客户机发消息,由于一个服务器可以连接多个客户机,而同客户机的每一个连接都由一个Socket来维持,因此ServerSocket.Socket.Connnections数组中存储的就是同Client维持连接的Socket。在标准Socket中,服务器方的Socket通过accept()方法的返回值获取维持同客户机连接的Socket,而发送、接受消息的方法分别为send(sendto)和recv(recvfrom), Delphi对此进行了封装。
5、其余代码的简要介绍。procedure TChatForm.ServerSocketAccept(Sender: TObject;
Socket: TCustomWinSocket);
begin
IsServer := True;
end;
ServerSocket的Accept方法,当客户机第一次连接时完成,通过其参数可以认为,它是在标准的accept方法后执行的,因为有TCustomWinSocket这个参数类型,它应该是标准Server方Socket的返回值。procedure TChatForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;procedure TChatForm.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end; - 上一页 [1] [2] [3] [4] 下一页
-
- 利用Delphi编写Socket通信程序 相关文章:
- ·利用插件来校验XHTML是否符合Web标准
- ·Web2.0在中国步入歧途 缺赢利模式VC有错
- ·利用UNIX的TFTP和RCP配置路由器
- ·黑客如何利用文件包含漏洞进行网站入侵
- ·利用iTextSharp生成Pdf一个小例子
- ·ASP.Net利用CSS实现多界面的方法
- ·利用XMLHTTP无刷新添加数据
- ·异域风情 奥地利美丽风景集
- ·网站优化:怎么利用Tags进行SEO
- ·利用expression实现界面对象的批量控制
- 利用Delphi编写Socket通信程序 相关软件
- ·魂之利刃4公布宣传片
- ·NDS《胜利11人DS 中文汉化版》模拟器
- ·《超级马利奥64 DS》模拟器下载
- ·《毛利元就三箭之誓》试玩
- ·NDS《哈利波特和凤凰令》模拟器
- ·亚历山大·别利亚耶夫作品集V1.0
- ·《哈利波特与凤凰社》PC版试玩
- ·秘书长——一场正义与腐败的权利博弈
- ·法拉利赛车2 汉化版
- ·《命令与征服3泰伯利亚战争》全版本修改器全集
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:全局热键
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
