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

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

针对Google Glass应用的四大UX设计原则及典型应用 Google收了摩托罗拉,微软收了诺记,黑莓又将花落谁家? 十亿月PV网站秘诀:Reddit自失败中总结的25条经验 粉碎5个NoSQL流言:各司其职,NoSQL的出现比关系型更早 豌豆荚发力移动游戏平台,推出SDK 2.0 BlackBerry Jam Asia 2013即将在香港隆重召开,免费门票限量提供 小米发布会高潮迭起:米3、电视、Hugo大牛 谷歌放在Windows上的特洛伊木马:Chrome Apps应用平台 解析:Google基于数据驱动的招聘面试程序 决战“缓存”之巅:微软 vs. 亚马逊 雪中送炭:十大前沿移动应用开发工具 高通智能手表Toq都用到了哪些技术? 研发周报:修改一行SQL代码 性能提升了100倍 2013年NoSQL就业趋势分析 鲜为人知的静态、命令式编程语言——Nimrod 高性能Web应用打造攻略:扩展过程中20个最大的绊脚石 开源项目Marathon:让你的数据中心像谷歌一样运行 精益化运营:10款移动统计分析工具推荐 移动建站工具(一):分秒钟将Web网站移动化 移动周报:小米的“倚天屠龙记” 智能手表是个尴尬的产品 屏幕缺陷一枪毙命 看15岁的谷歌的前21位员工现在都在做什么 分析师:三星将失去中国市场份额的头把交椅 5款工具助你写出更好的Java代码 Noitom:"中国创造"的动捕技术 缘创派:帮助技术人员寻找创业伙伴 Nginx创始人Igor Sysoev解读Nginx的发展史 对女性友好的编程语言 ISC2013专家云集,畅谈全球网络安全 CTO俱乐部第109期下午茶:数据库之分久必合,合久必分 CloudConvert:支持移动应用的格式转化服务 如何调用计算器啊? 为什么我的机器运行spy++出错啊, 关于网络流量的监控,高分 ***************动态创建DSN中的一个怪问题***************** 除了电脑程序外,还有什么物理性的方法可以清洗喷墨打印机的墨头? 请问这首歌的歌名? xmldom问题。 讨论:给个用XML的理由先,我现在只知道XML可以跨平台,提供数据接口的作用。请大侠讨论一下 如何定义全局变量? 在线等待:在DELPHI中调用windows api 的 SetFocus(),应怎样调用? 关于指针问题 有点搞不懂了!! switch的简单问题 在哪里添加全局函数 两个asp.net问题,请高手一定解答! 关于Treeview的几个问题? 怎样才能实现按返回按钮以后,自动刷新刚刚提交的页面!代码如下,请帮我改改! HELP!!! 请问VB关闭WINDOWS下面的所有窗口的命令是什么?谢谢 数据移植问题,多帮忙呀! 问来问去,也没问出个所以然来。干脆再简化一下问题吧。 如何制做帮助文件? 一个XML绑定数据集的问题? 多层数据库一问!!!!!!!!!!!!!!!!!!!!!!!!!! 关于winvnc(在线等待) 请问“数据结构”这门课主要是学什么的? 这个毛病是什么原因?(加急,肯请赐教) 在线等候?自定义控件问题? 请问知道进程的ID值和句柄,能否控制程序窗口的大小? 多层数据库疑问!!!!!!!!!!!!!!!!!!!!!!!!!!! 关于IBM AS/400 DB2数据库编程 怎么从_streamptr 中恢复 recordset? 与数据库建立联接的后续问题 早上偶然看见前女友从眼前走过,突然有种莫名的感动 歌词和音乐同步问题?winnap的歌词插件基于什么样的原理做出来? 一个菜鸟的苦恼!! 用命令行配置IIS的命令是什么? 看看这个程序到底错在哪? 查找点对象问题,各位进来帮我看看 各位朋友一定请帮忙,关系到我工作问题(不是很难) 用ASP和Javascritp或Vbscript配合将SQL Server里的数据在客户端转换成EXCEL文件 Application的问题,急 谁能告诉我《银色幻想》在哪里有得下,万分感谢!!给分多多 新開一貼,sql語句請教,急,給分!!! 局域网内指定IP出现“该静态IP地址已经使用”,原理如何,如何编程实现。 一个语句的写法,up者有分 关于数据汇总的精典SQL语句求教! 有奖捉疵 50分 怎么打*****号部分的代码总不执行啊? 请问如何列举当前打印机支持的纸张信息? 歌词和音乐同步问题?winnap的歌词插件基于什么样的原理做出来? 急救!!!关于对话框中编辑框重画问题 炒肉之前为什么要先放点淀粉浆一下啊炒肉之前,先用少量淀粉和在肉里,这样的肉炒出来不硬,但是如果直接把肉扔到锅里,这样炒出来的肉就会很硬,有时候还会发黑,这是为什么呢.. 求关于感恩的名言和事例.急求关于感恩的名言3条,事例2个.要名人的事例,不要长,几句话就够了. 静脉注射空气疼吗?静脉注射空气又多疼?还有哪里可以买到胰岛素,注射胰岛素疼吗?是注射空气疼还是胰岛素疼? 正弦交流电E=Emsinwt前三分之一周期的电压有效值(用Em表示)这个问题问了两遍,前一问里有三十分的. 两块木块重叠,用力拉下面的木块,下面物体受到摩擦力的方向为 求静脉注射空气的方法! 铁混有硅除杂fe(si)括号内为杂质 对于在如何提高学习效率的问题上,大家的意见是一致的.这个病句怎么改? 静脉注射空气是一点一点推进去还是一下都推进去? 求助化学除杂:铁中含硅杂质 及化学方程式 木块受到的摩擦力是例四, 拉普拉斯变换法则 sin(7t+7pi) 人在呼吸的时候会呼出氧气吗?如题,人应该是吸入氧气,然后呼出二氧化碳,有可能呼出氧气吗? 一个多边形除一个内角外,其余各内角的和为2060,这个内角多少度!几边形?如题.2、若一个多边形的内角和它的一个外角之和是2060,求这个多边形的边数和这个外角的度数3、若3、5、X是一个三角 一个函数经过傅里叶变化后最大幅值会有变化吗? 铁铜铝硅在地壳中的含量排序 型号(yjv)规格(1*35)的电缆每千米含铜净重是多少公斤 若直线a//平面M,平面M//平面N,则直线a//平面N 为什么不对? 高数!求y=2x与y=3-x^2围成的图形面积 用淀粉裹完肉再炒怎么才能不粘锅?肉上面粘了淀粉然后放入锅里炒,很爱粘锅,而且弄不下来,最后还糊了.我看那些电视上大厨做饭都不粘.不要说买个不粘锅了,以前我买过一口不粘锅,很小心 请翻译成英文:计算机数字化图像处理技术. 如何在PPT中添加圆环图 淀粉炒肉怎样不粘锅 使用计算机对汉字图像处理进行自动识别的技术是什么 ppt中间透明圆环怎样建立 落花不是无情物,化作春泥更护花. Fe和CuO微热反应的化学式 ppt里面怎么设计图形旋转动画的? 落花不是无情物,化作春泥更护花用一句话概括上面诗句中的哲理 圆的周长公式和面积是什么?圆的周长和面积公式是什么?我已经忘了 PPt中自定义动画 蛇螺旋转,如果想让其旋转时中心点不在中间,而是以左下角为中心点旋转怎么设? 测定铝合金中硅元素时,为什么要用碱性溶液溶解?用酸溶解不一样能溶解硅吗 谁帮我看看这个字怎么念 制作PPT时动态效果怎样做?比如做一个转动的地球呢? 落花不是无情物 化作春泥更护花什么意思?语文书里的~~~~ 脱氮除磷有前途吗? 关于求二阶偏导数问题, 勾了淀粉的肉怎么炒 周期函数f(t)=0,0 请帮我求二阶偏导数~1.已知Z=x^3siny+y^3sin,求(ə^2z)/( əxəy)2.已知Z=ln(x+√(x^2+y^2),求(ə^2z)/( əx^2)和(ə^2z)/ ( əxəy) 炒肉怎么蘸淀粉 数学好的朋友请进,拉普拉斯变换问题!请问对一个常数求拉普拉斯变换是多少?比如求5的拉普拉斯变换 L(5)=?是不是0? PPT中怎样让图形沿着一个看不到的圆不断循环转动. 为什么说这则短短的评语树立了我写作的信心? 证明两次傅里叶正变换等于原函数取反 关于祝福的名言要极短的,不要复制的和英语的,要极短的 是诗的最好 祝福他人的!无反悔! 我认为你的意见是不对的意见.修改病句 傅里叶函数的运用证明题 要求应用傅里叶的卷积性质完全搞不懂了 … 要求应f1(t)f2(t) 经过傅里叶之后变成 (1/2π)F1(w)*F2(w) 这一性质.… 数学是在太渣了 … TT 祝福的名言 塑料检查井的适用范围有哪些? 证明关于单调函数的傅里叶系数无穷小的阶的问题函数f(x)在[0,2PI]上单调,证明ak=o(1/k),bk=o(1/k),其中ak,bk是f(x)在[0,2PI]上的傅里叶系数.这题提示用第二积分中值定理,但是算到最后出现lim(k->无穷 有关祝福的名人名言 高数下册,对面积的曲面积分 解不等式组,把不等式组的解集在数轴上表示出来,并写出不等式组的非负数整数解. 在线等答案 谁知道祝福名言 将一个小木块轻轻放在匀速运的水平传送带,小木块受到的摩擦力方向?抱歉我想说的是 刚刚放上去的时候 这样,F=ma 是不是和加速度方向相同? 不等式组x+5/2>1 4-x>=1的非负数解是急 关于“问候”的名人名言越快越好啊! 修改病句:在会上,纷纷发表自己的意见. 不等式组 X≥-2 X>-3的负数解集是 克里称沙特是中东领导者 两国须维持正诺基亚Lumia 929最新真机谍照巴基斯坦总理谢里夫:无意义的暴力换不中国接任安理会轮值主席国 中东、非洲老牌肌肉男星上演\"金蝉脱壳\"史泰马来西亚保安现状存隐患 保安员过半是世界俄罗斯人民大会授予普京捍卫大国地2辆北约油罐车在巴基斯坦遇袭 或为巴反盗版强硬派RIAA被指在网站上侵犯外媒:雾霾促日本家庭“逃离中国”穆尔西首次受审 埃局势或再动荡“囚笼”与抗议白宫宣布美国副总统拜登将于12月初访上市银行两大魔咒延续 股份银行民生业北大起床协会:团结起床困难户为吃早饭NSA全球监控无孔不入 白宫每日简报京明年购车摇号指标减9万 拥堵费最快海军机动-5号演习探亮点:实测数据让中国海洋开发存六不足 全球化竞争催生楼市“金九银十”收官 北上广深房价涨实拍:印度时装周模特甄选后台(组图)北京首套房利率8.5折为主流 二套房朋友因从南航撤资,该公司无现金抵了一乐视2代将搭载虹膜识别 这些黑科技能3.2收评:两会能否将A股大行情开启大家帮我看看这车是什么牌子的男人体力差要怎么办?银行间债市向境外开放一箭多雕阿里京东连放大炮,谁都不掌握电商真理成长保:闯入亲子大健康千亿级市场试听:听感上,vivo Xplay5同人气明星大比拼,强强对垒你抱走谁?10年竟长456克,“疯狂石头”会自各路明星颜的巅峰,谁惊艳了时光?青岛轿车清晨“飞行”正面撞死人行道上四川宜宾常务副市长杜紫平任市委副书记湖北郧阳区扩大蚕桑业发展规模至2万亩4日起陕西中北部沙尘天气来袭“铁观音”茶叶包超重离谱 原来内藏3云南男子驾自制车牌上路被查 12分全散户须知:周四 入场需谨慎 警惕抓牛你家千万不要、不要这样装修,会破财太
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘