说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi4的Winsocket编程

HTML文档下载 WORD文档下载 PDF文档下载
Delphi4的Winsocket编程

也许你曾经叹服过微软公司的IE浏览器等网络应用软件功能之强大

技术之先进,也许你目前还没有能力开发这样的一个复杂的大型系统,不过不用着急

这里可以给你一个练习的机会,就是学会用Delphi的Winsocket来编写基于TCP/IP的应用程序,这里假设你已经对Delphi开发工具已经初步熟悉了。

我们可以想象,如果从最原始开始来编写一段实现与远程计算机通信的程序,则必须对相关的网络协议、系统的底层知识以及网络软硬件技术有一个全面的熟悉和掌握,然而这在短时间内对大多数人来讲,都不是一件容易的事。

幸运的是Delphi的网络组件库中为我们提供了关于实现网络通信的组件,它们封装了复杂的具体实现的细节。其中ClientSocket和ServerSocket组件使我们能够很方便地编写出自己的网络通信和资源共享程序。

Delphi 4.0中编写Winsocket程序的步骤分为:

1)Winsocket组件属性设置;

2)建立与远程计算机的连接;

3)计算机间的数据传输;

下面具体就这三个步骤做详细说明。

一.Winsocket属性的设置

Delphi 4.0中将Winsocket细分为两种组件:ClientSocket和ServerSocket。它们分别作为客户端和服务器端的组件。即在客户端程序中采用ClientSocket组件,而在服务器端则采用ServerSocket组件。通过这两种组件之间的通信,再加上辅助的应用程序代码,就可以实现一个简单的通信程序。当然在客户端程序中再引入ServerSocket的话,那么客户端程序就可以充当服务器了,可以对其他的客户端程序的请求进行响应。

如果正在编写服务器端程序,就必须设置ServerSocket组件的Port属性。之所以要设置此参数,是因为在同一台计算机上可能运行着多个服务器程序,而它们可能总在不停地接受来自于远程客户端程序的连接请求。如果你正试图发送一份电子邮件,而系统却将你的请求连接到了另外一个服务器程序上了,则你的邮件就肯定无法正常发送出去了。所以必须给服务器程序上的ServerSocket组件设置一个合适的端口号Port。也可以设置Service属性,它指示了ServerSocket所提供的服务类型,比如:FTP、HTTP等等。然后设置Active属性为True。

如果正在编写客户端程序,则设置ClientServer组件的属性就多一些。Port属性应设置成和服务器端的Port属性值一致。另外Host的属性必须正确设置,它是一个只读属性,在设计时不可用。它指示了客户程序所要连接的远程服务器的主机名。也可以设置Address属性,也就是远程主机的IP地址。如果这两个属性都设置了的话,那么系统将采用Host属性,而Address属性设置的IP地址就变成无效了。

二.建立与远程计算机的连接

要在远程计算机系统之间进行数据传输,首先必须在通信的两台主机之间建立连接。

服务器端的ServerSocket组件调用Open方法初始化Socket连接,同时也就设置了Active属性为True,将ServerSocket组件设置成侦听模式,随时侦测是否有连接请求。

如果服务器接受了客户程序的连接请求,则触发OnAccept事件,如下代码就是处理接受连接后服务器程序所要做的工作。

procedure Myform..ServerSocketAccept(Sender: TObject,Socket: TCustomWinSocket);

begin

IsServer := True;

end;

在客户端程序中,ClientSocket组件则设置Port、Host等必须的属性,然后设置Active属性为True,提出连接请求。

三.计算机之间的数据传输

一旦服务器端接受了客户机方面的连接请求,客户机就可以发送数据。这时,在客户机和服务器之间就拥有了一个Socket,通过此Socket双方实现通信。所以Socket属性很重要,它又拥有很多的方法,用其中的几个简单的方法,就可以实现数据的发送和接收。

客户机端用如下形式:ClientSocket1.socket.sendtext('string you want to send');

在服务器端采用如下形式:ServerSocket1.socket.recievetext( str: string);此函数返回接受到的字符串的长度,将字符串存储在变量str中。

上述是数据传输的最简单的例子,你还可以采用Socket属性所提供的其他方法来实现复杂的数据传输。

虽然Delphi 4.0中使用Winsocket组件十分方便,但是要真正熟练运用它来实现网络应用程序的开发,则必须仔细阅读关于它的帮助文件和示例程序。在不断的学习中比较这种方法的优点,掌握其编程特点,进而掌握Delphi中所提供的其它网络组件,例如:NMPOP3、NMUDP、NMFTP等的编程技巧。到那时,你就会有能力参与真正意义上的网络应用程序的开发,而不是停留在拿来别人的网络应用软件,设置一番、会熟练操作的水平上。

究竟谁真正关心比特币,不妨看看基于大数据的百万条推特分析 Firefox 29正式版:高度自定义模式、全新菜单和Australis UI 冼茂源:HBase在垂直搜索业务以及数据存储中的应用! 阿里云计算北京布点 全球第三个云数据中心开放 【走近讲师】友友天宇CEO姚宏宇:与行业结合是私有云厂商的重要出路 万亿移动支付产业的难点和痛点 削减硬件运营成本?亚马逊或自主研发ARM架构芯片 开源框架eMobc:XML开发原生移动应用so easy iOS应用安全开发,你不知道的那些事 市场化API的十个捷径 MongoDB和Cloudera结盟,欲征服大数据市场 红帽收购Inktank,将统一Gluster与Ceph? 那些巨头公司Logo是这么演变来的…… 以史为镜,剖析PaaS大迷局 “心脏出血”还不够?又曝OAuth和OpenID登录漏洞 走近讲师:搜狐于顺治讲述搜狐PaaS云平台实践之路 AppFlood 2014 Q1报告:亚洲和中东市场成为开发者出海首选 华为联合运营商构建能力开放平台 Facebook产品设计主管:揭秘公司如何招聘优秀设计师 【附信息图】美国因软件缺陷导致的十大事件 二十一世纪Windows简史 为什么用户体验和生态系统决定云公司的成败 三星Tizen,路漫漫其修远兮 用户体验是新优势,互联网会受到何种影响? 从GitHub看编程语言流行度 陈沙克:Openstack Horizon Icehouse Blueprint简介 叶琪:Hadoop不是万能的 要明确场景扬长避短 云网融合驱动数据中心技术聚变 给想持续编码CEO的4个建议 盘点开发者最喜爱的十大开源Xcode插件 Cloudera CTO:取代MapReduce 未来会加大Spark等框架投入 高分求 在vc中,怎样使用dll(也有idl)文件呢。请指教。 com入门问题 怎么把用程序加入的控件建立事件呢?高手请进! ADO问题:这样的也会报错,高手解释一下!急,在线等待!!!! 如何用VC给Word加载页眉页脚???? 数据挖掘 急需VC++的高手指点一下,北京的最好,呵呵,成了请你吃饭! 98下的闪存问题 在线等~~~~~~~~ 文件的问题 谁来看看,好难啊 关于oracle数据打包的问题 SQL出错了...以前装好一次..不知道被谁搞了,启动不起了..我重装..就这样了 急!!!为什么的为加了<% %>,传 上去就不能打开呢?去掉又可以的,改成客户端运行又可以 如何将服务器a里mysql的所有数据导道服务器b中? 动网论坛6问题:论坛版面信息(版名、斑竹、版面说明)经常自动丢失 大家帮帮我!!!!!!!!!!!!!!! 数据仓库与数据库 动态创建的列和手工填加的列有什么不同吗? SQL语句中openrowset函数的问题?12点以前结帖,在线等待!!!!!!!!!!!!!!!!! 请问在win2000server中对于ftp设置... Promise真的是混蛋!B死他!(驱动高手帮忙) 客户端怎么封装数据库? 谢谢 杀不出毒,机子还很慢,请大家看看 急啊!系统有问题! 请问怎样知道自己程序的某个DLL是否已经加载? 将数据导出到excel,同名文件自动覆盖应该怎么做? 求教高手! 制作发邮件程序出错,高手请教! 求助高手:在JavaScript中如何赋值给父窗体上的某一ASPX控件? 菜鸟的问题 怎么web页面控制打印范围? 推箱子的每一关是用算法算的,还是人编的? 为什么北京的高程准考证到现在还没有发呀??? 谁有类似万网的域名查询系统??高分相送! 我想搞软件开发,学点网络知识,请问有多大用处? 在ASP.Net中,用VB.net写代码,怎么取得到的记录集中的记录个数啊? 请教双网隔离方案 重装系统以后,如何对Microsoft Outlook里的各种参数、选项进行设置? 求OA设计方案 请 ychuiming(飞天),hkbarton(宁静至远||淡泊明志) 进来接分 在ASP.Net中,用VB.net写代码,怎么取得到的记录集中的记录个数啊? pb中有没有与或操作符?就象VB中的Xor这类操作符? 如何从一个单一的JSP程序员迈进J2EE的世界--请高手指点迷津 第一次来csdn,请各位多多关照。随便问一个巨傻的关于BDE的问题。 离职,却被原来公司经理阴了一下 求AutoResize控件(分不够可加) 谁做过远程代理的程序(急,100分求助,不够再给) mm不让我去接她 树形菜单的问题 如何限制对SQLSERVER的请求访问数? 爱装无知,明知故问的人有问题吗?明明懂,却装不懂,很爱明知故问,三十岁的人装个十岁的智商,这样的人是不是有问题?还是此人藏的深? -It seems to be difficult for you to make him _________ his mind. it's difficult for structured 意思 structured 求大侠相助。是属于医学专业词汇 structured chaos 原句是The military hierachy,characterized by bureaucracy,incompentnce and self-aggrandizement,is nothing more than structured chaos.能给PARAPHRASE一下不 采菊东篱下后一句是什么 采菊东篱下,后句 言行一致造句方法用言行一致造句 12. Many great men come from poor families,----Lincoln and Edison, _______. A. like that B. as though C. for example D. such as[893] 13. The man was looking _____ at me and at no one else now. A. right B. rightly C. straight D. straightly[ 用断章取义,言行一致造句 巴黎中国电影节开幕首条横跨欧亚海底隧道启用 伦敦坐火车范长龙会见马来西亚国防部长强风暴致荷兰人损失近亿欧元巴西拟立法强制跨国网络巨头建立本土数强风暴袭击荷兰致损近亿欧元“丝绸之路经济带——区域合作的愿景”《中国好声音》电影版海报曝光 吴莫愁南京前三季度交通通信人均支出2886国信办主任:“六个目标”让网络空间清国家林业局:严格限制占用生态脆弱地区世界羽联牵手道达尔今晚大乐透奖池为12.10亿 预计最横琴不远Uber被查乘客和司机不降反增 今晚南粤36选7奖池572万 预计最更大更强的生意固然有面子, 做喜欢做广州福彩又送“金”粗制滥造企业 会被淘汰出局多所大学公布招生计划李永波:林丹能上场, 要谢就谢世界羽“我们相信年轻人” 麦当劳7万员工岗戎娇凤皇在笯萌兔修仙手札古夜妖姬:我的僵尸笔记炮灰女配的无限逆袭豪门暖婚蜜爱医品傲妻凤权逆河山乱世倾君策凤临江山非典型萌妻成园温泉山庄旅游晓港公园旅游十香园旅游海印大桥旅游大元帅府纪念馆旅游大沙头码头旅游林则徐纪念园旅游外滩艺术馆旅游乌将军庙旅游西市河旅游七星石旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘