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

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

Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 CES 2014:奥迪下一代汽车将采用NVIDIA的芯片! Cocos 3.0 Beta发布:更易用、更友好 开拓新兴市场?诺基亚或推Android手机,UI界面遭泄露 预测2014大数据值得关注的8个发展方向 霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 1月10日:改变世界的iPhone七岁了,你是传奇! 同洲电子推出首款手机操作系统960OS 免费授权使用 如何在Windows 8.1的IE11中打开同步选项卡? 25年老对手评价微软:换CEO可行,但是太迟了 【PPT集萃】十位一线专家分享Spark现状与未来(三) 万元奖品等你拿!2014创客118新年大Party! Firefox OS的2013回顾和2014展望 Strom8 CEO:搞好手游开发,合伙人很重要 2013年Q4全球PC出货量同比下滑6.9% 已连续下滑七个季度 一周消息树:2013年十大产品、图书、公司盘点 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势 研发周报:超实用的JavaScript技巧及最佳实践 2013最吃香的技能:Java称霸、Android势头正猛 给我的NotePad做一个接口,直接和腾迅服务器相连,提供登录接口。然后说的话可以通过直接 关于ASP的日期计算问题,请大家来指导一下!!! 数组的使用? 音标如何输? .net中的窗体控制问题,在线等待,100分 插入记录的问题 快周末了,偷懒中。。。 VB分布式开发中调用远程MTS/COM+上组件,怎么进行网络通讯? 哪位大哥有空??请指教!!! 恢复MBR时可以拿任意的一张win98启动盘吗,即mbr是否跟系统有关? 图片处理 经典问题 传递设备场景的问题 请问大家如何通过一个类名来取出这个类的对象指针啊? 怎样在数据库中存储图像文件 .net,在应用程序中如何释放资源? 是否能控制交叉报表的列的排序规则 我想在一张网页上有不同的CSS风格请问怎么做? 嘿嘿,谁有domino/notes开发的命名规范? >>>>>>>EVC中ShellExecuteEx的使用问题,100分相送!<<<<<<<< 如何从数据库读出数据,然后导出为EXCEL格式? To buick555(王飞),请看看,关于EJB连接数据库的。 jdbc配置不对,SunOS5,weblogic7.0,Oracle816,报错如下:(片段) delphi中如何实现c中的'<<'和'>>'移位操作符?急..急..急..急..急.. <COM技术内幕>讲的是COM的基本原理及其实现,请问想了解COM的应用,需要看什么书啊? 怎样判断一个文件是否存在啊? 请教高手:如何做一个分帧显示的页面?(vb.net)在线等待,马上给分。 为什么用户控件是抽象类呢? 报表的保存到文件中及文件的使用问题 IIUG 的informix FAQ 如何利用日志文件记录每一步操作?请hjhing(winding)兄,leimin(黄山光明顶) 兄前来继续问题 请问有谁看过direct x8.1 里的示例程序 directsound capture,我们讨论一下好吗? 请教:我每次新建窗体都要设置窗体的Font属性,请问: 推荐几本学习linux的书,谢谢 用VC编程,手头最好有哪些书(包括电子的)? 如何删除单文档项目中没有ID的菜单项?例如分隔条,Pop_up的菜单? Delphi中如何控制WORD 如何在VB中实现多个WORD文档合并成一个WORD文档? U 令女人反胃吗? 哈哈~ 像素格式 请高手指点:请问谁写过带有Collection属性的控件?简单的如:DropDownlist的Items,复杂的如DataGrid的Items 一个存储过程错误处理的问题 初学JAVA,问题多多! fastreport中怎样改变条码打印中字体的大小? 各位兄弟! 关于在CB中,数据转换成Excel文件的第三方控件,谢谢 那里有《shell编程》和关于curses编程的教程可以下载,请帮忙? STL中的算法有数学上的内插法吗? oracle里面有这样的sql,或日志什么文件的吗? 求助:怎样挽回一个崩溃的Domino?急!!! 为什么我在WIN98下已上网了(拨号),就是不能浏览网页。。。。:) Finally,he gets his hats back.中"back"是什么意思,如果不要它,这句话的意思有什么不同? 辑的的车换成戈读什么? 雅思听力怎么练习提高?现在在准备复习雅思,准备寒假报班,想问问各位前辈,听力的复习经验.小妹英语听力十分薄弱而且感觉十分迷茫! The old man __his glasses "部"的右边部分改成"到"的右边部分,什么字啊 怎么练雅思听力雅思听力平时怎么自己练习呢?有经验的分享一下吧,另外谁有雅思真题的也分享一下吧.是不是还要扩充单词量啊?另外有考过GRE的同学也来分享一下经验吧。 he gets his hats 能字的右边改成长,是个字么? 我要一段自己用英文写的语言可以是凄凉的 可以是温馨的可以是感动的什么都可以 但是要充满想象 自己写的有感情的 英语隐喻理论是什么 创怎么组词 雅思听力怎么训练?具体计划, 名词所有格和belong to的用法转换 高中英语选择疑难(19)Many companies are eager to sign a contract with Amanda,who has the potential to ____ a super star.A、remain B、grow C、make D、turn请给出理由 This is my own idea 的同义句? The girl next to me ______ you.Is she your daughter?A looks at B looks like C looks after D looks for 13,14选什么, This is my own (同义句) The idea is___ ___This is my own idea A group of young men hope that getting this kind of job will finally be the ticket to successA road B gate C street D direction这题是要选一个词替换划线部分,划线的是ticket,老师给的答案是B,但是选A不是更对吗? 英语小故事视频 带翻译 this is a good idea 改为同义句this is _I_坐等..0.0 两个空 My best friend near to me?还是next to me? 问下练习雅思听力听写的同学我很好奇你们听写是怎么听啊?难道放一段文章的录音,然后不带停顿的都写下来?我下个月就要考雅思了,但试着听写每一句话都能听懂,也会写.可是实在来不及啊, “but now I realize this idea is redundant”翻译成中文 #[15] The young man ______ better pay many times,but he failed and finally had to give up the job.A.demandedB.bargainedC.requiredD.compared请帮忙翻译包括选项,并且分析. 我的鼻子不大用英文怎么写 This is my s__,I study in it My best friend sits next _____ me. A、in B、on C、to D、behind 76.This idea sounds quite______. A.good B.well C.interested D.excitedly请详细说明 The thieves' car was badly damaged.能否写成The thieves' car was damaged badly. The young man had a job_____(interview)in a company just now. This idea sounds ------.A.greatB.greatlyC.wellD.nicely I spent the whole day repairing the car. The work was______ easy. A. nothing but B. something but C.anything but D. all but大家看看这题选什么?请详细解释下!谢谢! 英语翻译:当我听了一句较长的话后,不能完全复述出来 This idea sounds ( ) terrible.中文是;这个主意听起来真糟糕 为什么说下面这句话是错的?"The car is easy to be driven"为什么上面那句是错的,而下面这句确是正确"He wanted to be paid immediately."非常感谢了 线鼻子的英语单词 He says that he__likes this idea.A.very B.much C.quite D.well the question is easy to answer怎么不用被动语态 鼻子用英语单词怎么拼? nothing can make him his mind(change) The car was badly damaged.It can't be used now. 改为简单句. 派子偏旁改成月字是什么字 nothing on earth could make him change his mind.这句话怎么翻译 红外线,紫外线的定义和作用 鼻子有几种类型 英语单词 ______ he has made up his mind,no one can make him change it.A.Once B.Unless C.Until D.As 红外线与紫外线中的这个“外”是什么意思啊? 月改一笔是什么字 关于关于科学作文的好词好段好句三分钟后要用,求哥哥姐姐回答一下 雅思听力如何练习? 汉语“们”与英语S表复述有何不同】 “腾”去掉月旁改成女旁是什么字 insist on one’s doing 造个句子 He can nothing change his mind 怎么办翻译 英语翻译 The mountain is too high __this seventy year old man nothing can__(make) me change my ideas 高中英语第17,19题 the old grandma is seventy对 seventy 提问 “用英语和汉语写一些激励自己的话”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘