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

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等的编程技巧。到那时,你就会有能力参与真正意义上的网络应用程序的开发,而不是停留在拿来别人的网络应用软件,设置一番、会熟练操作的水平上。

【探秘ES6】系列专栏:剩余参数和默认参数 专访资深程序员庄晓立:我为什么要选择Rust? 主会讲师确认,2015中国人工智能大会火热报名中 容联·云通讯线下沙龙:IM 5.0助力App社交化 【CTO讲堂】全数据驱动产品优化,美国互联网公司A/B测试经验分享 《近匠》易快报:以报销做企业消费场景下的Slack 纷享销客D轮融资1亿美金,启动开放平台战略! 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心” iOS UIView动画实践(一):揭开Animation的神秘面纱 【前端人生】Teambition前端工程师陈涌:非计算机专业,依托社区不断成长壮大 iOS UIView动画实践(二):Spring Animation与人机交互 基因组与数据整合:DNA应用开发正在临近 2015 PHP框架调查结果出炉,Laravel最受欢迎! 【CTO会员专访】KEEN创始人兼CEO王琦:在GeekPwn,遇见一极棒的安全人才 创业公司都在使用的3款Python库 深入理解Objective-C的Runtime机制 你不知的Docker 创办人兼CTO游走美法的浪漫狂放 《近匠》环信CEO刘俊彦:移动客服的未来化场景 iOS UIView动画实践(三):Transition Animation 【CTO讲堂】无社交,不App!——为App加载强大的通讯社交引擎 【探秘ES6】系列专栏(七):箭头函数 【前端框架】Backbone.js在大型单页面应用中的应用实践 【探秘ES6】系列专栏(六):解构赋值 《近匠》TestBird,专注的手游自动化云测试平台 【探秘ES6】系列专栏(八):JS的第七种基本类型Symbols 专访李林锋:我与Netty那些不得不说的事 手把手教学:巧用Core Data和RubyMotion开发iOS应用 《近匠》琥珀天气,精细化打磨征服Google Play 【CTO讲堂】人工智能到底能为我们带来什么? Linksys再度回归中国市场,主推智能路由 Windows 10:全平台战舰与移动化破冰——微软(中国)操作系统工程院院长谢育涛专访 关于简单的access查询 java字符转换问题!!! 请教一个Struts标记问题! 一个cab下载的错误信息解读,请教高人。 OutLook?怎么用它发邮件,经常提示错误? 帮看这段删除纪录代码有什么问题?三层结构oracle 本人要做一个WEB合同管理平台,由于以前没做过,请大家指示? Web Application 中怎么来调用 Web Server?谢谢! DataGrid中模板列嵌套的DataGrid怎样相应其事件 [调查]程序员证在你们公司里到底有多大的作用?有多少人有证?希望有没有证的都进来说一下。 怎样把字符串"C;\aaa\bbb"变成字符串"C:\aaa\ccc\dd"?用什么函数,操作? 我的SQL Server 装好后,出现下面的错误 这个文件查找真是怪!......msdn源代码居然有问题, 进来看看... 请问在TreeView控件中如何通过光标的上下移动获得光标所在项在数据库中的ID值 對掌上電腦Sony Peg-TG50和ACER N10怎麼看??? 使用SOAP协议传递服务器端查询结果容量问题? 菜鸟问题:数据窗口怎么设置检索参数?急!!在线等 ****入门提出的问题****,请各位高手指教! 很简单的一个问题。 这个问题怎么处理? vb如何调用一个组件?? 一个小问题,可不简单哦! 应聘CMM时,会被问到什么有关CMM的问题? 调用servlet出现这个错误HTTP method POST is not supported by this URL 在公网上如何连接远程数据库啊。。 这算不算bcb的bug?关于Image控件的使用。 使用 GDI 函数画直线时,如何同时在该直线的两端画出箭头来? 怎样改变网卡的工作模式???~~ 疑难杂症--关于共享adsl专线的网络问题--疑难杂症 小弟有一事请教??? 我的IE WEB 控件---TREEVIEW控件,怎么没有treeView.AfterSelect()事件? 新手接触midas的若干典型问题!小的头都搞大了!还是不行!望各位大虾赏个脸解答一下! 一个静态页面中的困惑!心急如焚.................. 请问这句话什么意思? 如何判断一个用户的会话已经失效?-解决立马给分 急:如何改变datagrid的背景色 string sqlstr=DataGrid1.Items[1].Cells[1].Text有错吗? 帮忙,请教一个问题! 请教高手:以下情况如何写sql语句和填写datagrid? 如何对dbf的数据库进行操作 请教大虾 写一个画流程图软件的需求分析(用VB做)(简单步骤也行) 关于权限问题。 如何让客户端在1024*768的状态下,显示800*600的效果 include和header有什么区别? 如何把从数据库中读到的值赋给变量 如何在owc做的饼图上写上 名称,数量,百分比 ?急,用过的请帮忙,先谢了 如何使对话框的菜单项无效? 兄弟姐妹们,帮帮忙给兄弟投票 如何访问Web.config文件中的属性? 请帮我写段程序!很简单的,谢谢! 模式对话框问题 材料作文怎么审题 一道高中生物题,从图中怎样看出亲和蛋白进入细胞,既需要载体也需要能量的? 上联:事越烦,越要耐烦 求下联…… 材料作文审题阅读下面的材料,根据要求作文.3月11日,最新的《福布斯》富人榜出炉,墨西哥的电信大鳄卡洛斯•斯利姆成为世界新首富.《福布斯》杂志说:盖茨和巴菲特在富翁榜上的位次 植物六大器官是哪些? 好烦啊,好无聊啊,谁能介绍点有意义的事情做啊本人16岁 材料作文审题立意材料:猴子出名会模仿人,一个老人看到一个猴子,便扔一个草帽过去,然后猴子拿着帽子高兴的走了.数年后,老人的孙子重复他爷爷的事情,猴子不再捡帽子,猴王出来便说:“ don't work on it The sign on grass says,“Don't walk on it.__ __"A:Look at B,Look out C,Keep out D,Keep on 何食少而事烦是什么意思 加湿器里面可不可以加空气清洗剂 人体内的六大营养物质是什么? 五类哇,阿里嘎到,是什么意思? 船做好后,下没下水呢?他还战胜了哪些困难?阅读 鲁滨逊漂流记 初中生日记;读后感;有重赏日记300字10篇;《钢铁是怎样炼成的》《名人传》《朝花夕拾》600字读后感 请高手这列数有什么规律?5,20,13,52,3,12,15,60 有什么物质溶于水显碱性,不溶于水不显碱性呢?如题.顺便问下怎么判断这种溶液显碱性? 用碘酒的方法检测() 中国的国土面积占世界总面积的多少? You should get up e______to catch the bus谁会了帮忙填一下, 为什么是work on it而不是work it on?也有cup them up啊!这些怎么区分? 超五类线什么意思 电熨斗高温挡那个55欧怎么算的 work on it 能不能写成work it on.如果不能,为什么? 高二哲学所讲的联系有哪些具体的内容(关系),如因果,矛盾等, 第二天早朝时,吴王会怎么对大臣么说取消攻打楚国的事.请替吴王写个发言稿.注意写出人物的神情、语气等.急100到200字之间 细胞之间的信息交流图二中①表示什么,②表示细胞膜上的什么,其化学本质是什么. 碳片与碳-12、碳-13一样都属于碳的同位素原子(这句话为什么错?)附:科学家利用精密的仪器把石墨折成只有一个或几个原子层厚的“碳片”,碳片为世界上最薄的材料. 那些进行科学研究的科学家,怎么记得了那么多公式,定义,还有各方面的应用技术我在大学读通信工程的,看到那么多定理、定义,头就大了,不知道那些研究员怎么记得了那么多东西来进行研究 鲁滨逊用了几年时间造了一艘木船不要答非所问 还要是在荒岛上做的船 work on it had begun 为啥不用被动? 夜雨寄北 译文 鲁滨逊造木船的经过 什么叫做离子 细胞识别与细胞间信息交流细胞识别与细胞间的信息交流有哪些区别? 鲁滨逊在海岛上造独木船的过程请看好题目在答 行么. 什么叫做“等离子”商埸里有卖一种“等离子”电扇这是什么原理的电扇呢 鲁滨逊造木舟之后有没有下水 自上高二后,语文竟成拉分项 每次90多(150)原来语文一直是长项的啊,现在却.作文较弱 尤其材料作文平时有看书 有做题 听讲啊,看着平时睡觉不下功夫的人都轻松的拿高分 更心里不平衡了 书本知识一定要通过实践才能真正变成自己的学问.举出一个例子说说《冬夜读书示子聿》告诉我们:书本知识一定要通过实践才能真正变成自己的学问.你也有这样的体会吗?能举出一个例子 吴王准备出兵攻打楚国为什么遭到了一些大臣的反对要仔细一些的吧! Don't worry.You shall get the book you want this Friday ,____according to the record,(————接上)Mr..Clark is to come to return it.A afterB whileC whenD while脑抽了 D 是when 举一个例子说曾经从以上哪种传,获得了说嘛知识汽车排放污染物百分之90来着什么,因此许多国家制定了控制什么的标准 吴王准备攻打楚国,大臣为什么要反对? He got his book this Sunday.(改为否定句)I _____ _____ his book this Sunday. 什么叫等离子?如题 you could help—— the desk a repairing b repair c repairs drepaired 与蛋白质有关的氨基酸在人体其他部位的细胞内是否存在,简要说明理由?重赏. 什么叫离子 …… There is a c___ on the desk .you can get onlionC是单词开头的字母! 神经细胞存在身体的哪个部位呢?最好有图片 甲烷和氧气能不能生成碳和水为什么 what's the matter?my desk is broken it's requires_________ A repair B repaired C to repairD repairing,Q1036592830,还有题 肝细胞蛋白质代谢图,那里错了?有图 work on I work on a farm .1.work 是谓语,on a farm 是状语;2work on是谓语,on farm是宾语.那个分析对? 鲁滨逊的船造好了,他一定会设法离开荒无人烟的孤岛.那么,他是怎么样离开孤岛的?他经历了怎样不可思议的航行?请你充分发挥自己的想象,把故事接着写下去.不少于400字. The bottle---------milk,so you can drink some 碳+氧气点燃能不能生成水 鲁宾逊在第几次什么时,船在途中遇到袭击,鲁宾逊来到荒岛 人的六大器官有哪些? 事越烦、越要耐烦. 叙利亚副总理贾米勒被解职 为主要反对横跨欧亚大陆 土耳其海底隧道正式启用首条横跨欧亚海底隧道启用 可乘火车从日警方查获“大麻办公室” 现场发现1盘点打医生事件:美请FBI培训 日需埃及武打冠军因支持前总统穆尔西 金牌日本一法学系准教授因涉嫌携带毒品被逮美众议院情报委员会就窃听事件举行听证分析称农业补贴政策负面效应渐显 需进温州已婚男爱慕邻家女子遭拒 拐骗其女上海自贸区挂牌满月 壳公司难炒作违规江苏通报九大虚假诉讼案例 法院“内鬼《食品安全法》修订征意见 非法添加最南京政府部门电视问政:道路大开大挖问南京菜市蔬菜供应“青黄不接” 牛羊肉南京海关:海外网购2.5千克以下奶粉营改增助推行业企业升级 业内期望全行日媒称两艘中国军舰通过冲绳附近毗连区《行尸走肉第四季》弩哥达里尔帅气花絮奥巴马极力摆脱“监听门” 美国国安局超强飓风“吹乱”西北欧各国 已致16中国科学家曾庆存院士获全球气象界最高世贸组织说二十国集团经济体贸易保护主二十岁,没钱?那就更不能抠了!期末考试周,怎样能在图书馆自习室占到女演员被同组男演员骚扰?拍吻戏被伸舌当红男星镜头前搞怪,私下参加活动“调讲真!电梯下、寄存柜最容易藏匿炸弹湖南利用女色敲诈多人的团伙主犯获刑1吉林破获公安部督办特大贩毒案缴获毒品湖南怀化市委副秘书长杨红军涉嫌严重违福建公安边防总队破获特大走私毒品案 浙江去年审理1千克以上毒品案逾百件 三亚宣判两宗毒品犯罪案 一审判处富曼欧潘福平:平台的风控永远是第一位这一天的雨啊,并没有想象中的大!被网红脸女友拴住9年,魏晨可以卖专一中国互金协会正式获批 PPmoney翁虹,三级艳星逆袭!与父母反目,一脱李宗瑞入狱1年!在狱中像个少爷,狱友多国各界人士:南海问题应由直接当事国上合组织地区反恐机构执委会主任:上合
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘