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

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

百度手机卫士正式发布 “防吸费”功能全球首创 2013年平板电脑市场竞争回顾 Apple太阳能数据中心进展顺利,但却在税负减免上备受争议 一名开发者的年度回顾 智能手表Pebble明年初推应用商店 开发者今日起可提交应用 够快科技推出企业级云存储服务“够快云库” 项目开发中,质量和速度哪个更重要? 亚马逊AWS落地中国,云计算产业圈集体发力 Node.js 2013年大事记 【开源推荐】ThinkPHP:大道至简,让Web开发更简单 IE11中的WebGL探秘:渲染速度超Chrome 数据驱动智能:百度在计算广告学领域的技术突破 UX设计师和软件开发者,谁将是2014年的老大? 爸爸去哪儿:开发知名题材手游压力山大 多平台同步 谈IE11全新功能 高通副总裁沈劲:移动是产生变革的强大原动力 高性能、高流量Java Web站点打造的22条建议 云巅:第三代虚拟技术+搜索引擎+乐高理念打造分布式桌面云 Intel:从“芯”构建下一代数据中心 WhatsApp:50名员工,月4亿活跃用户,日160亿条消息和5亿张图片 三星Galaxy Gear智能手表失利 需改进的8个方面 IE11全新的F12开发人员工具详解 研发周报:为什么开发者担心将代码公布 Hadoop YARN的发展史与详细解析 一周消息树:Firefox OS会不会成为下一个Android PhoneGap 3.3.0发布,支持Android 4.4 KitKat 移动周报:两岸三地在线编程学习网站大搜罗 有道周枫和他的“放养”团队 看IE11如何助力AAF推动公益事业 SUSE总裁Nils:将SUSE Cloud 2.0打造成“零影响的云安装程序” Windows 8之父Steven Sinofsky:2014年科技界的十大趋势 急!!!50分求购一个在程序中实现按下按钮功能的小程序,多谢了 在图象上的汉字显示问题 请问谁知道把AVI文件转换成BMP位图数据的算法 圣诞快乐 用什么工具可以从exe文件中把资源文件,如图像、图标提取出来? Word与Delphi的结合!高手请进! 贴子为什么掉到第二页上再UP就回不到第一页去了?见龟!——千山一刀 ^^^^^^^^^如何配置sybase的clinet端????^^^^^^^^^^^^^^^^^^^^ 进程与线程 在win2000系统下,构建asp+sql的web站点,但在web页中无法显示出小数点前的零? 如何配置sybase的clinet端? 关于webbrowser。 TO:riolee(随风) 关于directshow的 开始菜单中的运行找不到 请问各位谁能提供 CString 里有一个operator LPCTSTR,难道这个LPCTSTR也可以被重载,它不是操作符啊,也不在可被重载的范围中啊? 请问到何处用蚂蚁下载photoshop6.01软件 在UPDATE的时候,如何返回受影响的记录个数?[Oracle8i] 请问各位谁能提供jpeg文件格式的中文说明??????????????????? [question]tmd的,有人惹我,怎么办 Windows CE, Windows NT Embedded等嵌入式操作系统和相关开发工具在上海如何购买??? mobile web application 里的softkey到底是怎么回事呀 [心情不好]砂粉阿 告他[我好伤心] 将2进制(16位)转为16进制(4位),怎么做? 请教!( VC.NET 里面怎么使用 MSFlexGrid ? JAVA的版本问题 哪儿有C#单独的编译器下载啊 ASP新手提问! 有谁知道在DELPHI中得到包括硬盘、多媒体、主板等信息? 请问小新,以及其它delphi高手一个简单问题,我从网上下载了一个报表控件,请问该如何使用? 一个关于TWinSocketStream的问题 scjp考题一道!!!!!!!! 小弟初学,如何从CString 转化到 int .thanks a lot. 我要学习数据结构,算法,离散数学..... [不爽阿]今天圣诞,有人惹我 关于临时表的共享问题? 是不是我的问题太难了,没有人回答? 请举例说明:接口是怎样实现多重继承的? 听说最近由于IT行业不景气,程序员的工资缩水了?是真的么? 这样写有什么不对?? delphi的dll库返回后调用程序出错!加了一行无关代码却正常!求教各位大狭! 塔尼包姆出了不1本计算机结构的书,还有1本MICROSOFT的 Microsoft Windows 用户界面开发 请问是否很好 Access初学者问一 再次请教一个sql排序问题,一定给分。 请问:程序中对WM_PAINT,WM_CTLCOLOR,WM_ERASEBKGND三个消息处理的顺序是怎样的? 这个月生意只有上个月的1/5,怎么回事? 我女朋友说最爱她的人不是我,这意味着什么? 工资里导入上月数据怎么实现 谁有复读王(fyfdw2001)的注册码? 经过一段时间的努力,我做出一套电话语音邮件系统,可以用电话和手机来收发EMAIL,有意者请与我联系 xuyaoliang@263.net 请救救我吧!有谁能告诉我中程的分数怎么查! 不下雪不回家的动物是什么 用一个字来表示下面的时间:(1)表示日出时间(?)(2)表示很长的时间(?)(3)表示黄昏时分(?) 根据经纬度计算日出时间如题,我能提供的数据只是,中国国内任意一个城市的经度和纬度.例如广州(东经113.48、北纬23.6)以及日期,例如2009-01-09要求能计算出当地当天的日出、正午、日落时 下雪时什么动物在睡觉什么动物在活动? 用一个汉字来表示下面的时间:表示日出的时间 表示黄昏的时间 表示十五分钟的时间 表示二十四小时的时间表示七天的时间表示九十天的时间表示很长的时间注意是一个汉字哦~ 1除以21表示两个数( ),还可以表示( ) 下雪后出来活动的动物下雪后,天地白茫茫一片.有什么动物会出来活动呢?松鼠就不用说了,还有没有别的? 表示日出时间的一个字表示黄昏时间的一个字表示15分钟时间的一个字和表示过去了的时间的一个字是什么? 自由时差有两个紧后工作时该怎么计算?自由时差=紧后工作的最早开始时间-当前工作的最迟完成时间.那么当有两个紧后工作,且紧后工作的最早开始时间不同时,是按照大的最早开始时间计算, 用一个字表示时间. 用一个字表示日出的时间 时标网络计划怎样才能计算出最迟开始时间和最迟完成时间以及总时差时标图怎样才能计算出最迟开始时间和最迟完成时间以及总时差?2二级建造师z103030习题集多项选择题第12题答案与解析: 代表过去的时间的一个字88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 怎么计算总时差和自由时差 某工程双代号网络计划中A工作的持续时间为5天,总时差为8天,自由时差为4天.如果A工作实际进度拖延12天则会影响工程计划工期( )天 5分之16×3除以5分之4 (1/3+2.4*1/6)除以0 .22 求解双代号网络计划工作C的最迟完成时间和工作C的总时差.求详解3:工作C的最迟完成时间为(). A.0 B.3 C.5 D.11 4:工作C的总时差为(). A.0 B.3 C.5 D.8 谜题:一个小姑娘,生在水中央,身穿粉红衫,坐在绿船上.谜底是( ) 中国跨经度最大的是?一样 用成语表示下列句子的意思,成语呀1.痛苦伤心得像要死了2.名次排在前面的,很优秀3.喜悦非常,觉得超过所希望的4.容不得怀疑、猜测5.一点好处都没有 一年级猜谜语有水可养鱼虾,有土可种庄稼,有人不是你我,有马可跑天下. 中国大约跨越多少经度? 与学习有关的诗句,和俗语. 一道语文题,猜谜语猜字谜:1,有水可养鱼,有土可种庄稼,有人不是你我,有马走遍天下.( )2,左看马靠它,右看它靠马,两边一起看,脚踩万里沙.( )3,一只小帆船,载着一粒米,向东又向西,不知到那里.( 我国跨经度最广的省区,最南的省区,最北的省区,最西的省区,最东的省区,邻国最多的省区,邻省最多的省区,面积最大的省区,长江和黄河都流经的省区,长江的上游和中游都流经的省区?【有点多 地理算时差的怎么算求时差和经度的计算公式,写在下面 用一个字来表示下面的时间.十五分钟叫( ),三个月叫( ),十天叫( 填上动物的名称,组成成语抱头( )窜 叶公好( ) 悬崖勒( ) 地理时差怎么算 4分之1=2分之1:()=3除以()=():16 一又4/5乘(一又3/5+2.5)-0.65除以二又1/6=多少 ?要过程 关于地理时差计算每隔经度15°就一个时区,而跨过日界线就加或减一天,那么东八区和西八区相差多少个时区?(按照越过日界线计算),那东八区八月八日晚上8点,西八区是几月几日几点? 几道小学二年级的猜谜题1、有少就有多,有小就有大,要问这是啥?数学一符号.(打一运算符号)2、人身上四件宝: 第一件宝:东一片、西一片,隔个山头不见面.第二件宝:上边毛 课本是湖南教育出版社对时区的理解,比如一架飞机10月1日从武汉(东8区)飞往美国旧金山(西8区),途径14个小时,求到目的地时,当地时间是: 我就是看书上写的,有一点儿不明白:假设日本是5月5日中午12点,美国是5月4日晚上8点,问是从日本飞美国辛苦还是美国飞回日本辛苦..它的解释是,因为从日本飞往美国,“一天”的时间少于24小 0·99保留到千分位是多少? 1 让历史告诉未来(打文学名二)2 整世纪的战略(打成语一)3 百年老屋(打中国现代作家名)4 祝福(打字一)帮帮忙孩子明天要交了 地理时区计算请问有哪位知道我们地理上的时区时怎么样计算的呢? 猜谜;1人间天河2一路平安3四季温暖4船出长江口5久雨初晴6冰河解双喜临门〈猜我国一地名〉海中绿州〈猜我国一地名〉 初二科学智慧猜谜1.端着金碗的乞讨者(打一化学元素)2.品德高尚(打三种化学元素)3.父母出门(打一化学名词)4.水上作业(打一化学元素)急用啊,是作业来的,先谢啦! 位于东十二区的轮船于5月4日10时向东行驶入西十二区,这时船上的时间是( ).A、5月4日10时B、5月5日10时C、5月3日10时D、5月4日11时 四季温暖指的是哪个城市? 已知a+b/3=b+c/6=c+a/5求b/a+c值 初中地理有关时区的内容 ‘四季温暖’指的是哪个城市 下面( )的积最大.(a大于0)a.a×1 b.a×5/6 C.a×10/9 D a除以5/4 68.5+31.5除以(0.29+0.41) 如何简算? 猜城市名,编地名谜语 金银铜铁.倾盆大雨()四季温暖.双喜临门() 猜谜语(打一种文体)轻声细雨( ) 下笔千言,离题万里( ) 自编曲( ) 大家意见一致( )玩笑话( ) 大家都晓得( ) 下笔如有神( ) 一张写下谎言的字据( )牙牙学语( ) 90除以29= 请猜城市名,编地名谜语:金银铜铁 倾盆大雨 四季温暖 风平浪静 双喜临门 表示日出的时间 表示很长的时间 表示黄昏的时间 表示晚上的时间 表示一年的时间 表示七天的时间表示十天的时间表示白天的时间表示三个月的时间回答我,注意用一个字(这是五年级的暑 用动物名填空,组成成语老(?)破车 老(?)生珠 瘦(?)博士 请问:在十二生肖中什么动物不见下雪不回家 6除以x+1=x+5除以3-2x=4搞错了,应该 是6除以x+1=x+5除以x(x+1) 填上动物名称,组成成语:( )章( )姿( )骧( )视 什么动物不见下雪不回家 猜谜,一减一不是等于零(打一数字) 地球分为多少个时区,中国跟英国时差多少?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn