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

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

编程实现将所有窗口最小化-VB资料 不规则形状窗口详细说明 -VB资料 不用 API ,直接调用关联的程序 -VB资料 处理过程时的鼠标显示 -VB资料 窗口处理技巧大全 -VB资料 窗口事件的发生顺序-VB资料 VB创建不规则窗口 VB创建透明窗体 VB创建位图菜单 VB创建无 Icon 的窗口 打开 Win95 的创建快捷方式窗口-VB资料 打印机技巧 -VB资料 带有历史记录功能的菜单-VB资料 得知目前Mouse所指的Menu Item是哪一个-VB资料 调整 Combo 下拉部分的宽度 -VB资料 对象是使用 TAB 键还是鼠标激活的 -VB资料 防止用户编辑文本框控件中的内容-VB资料 改变 ListIndex而不发生 Click 事件 -VB资料 改变 TreeView 的背景 -VB资料 改变安装向导的背景色-VB资料 改变按钮的文本颜色-VB资料 功能强大的增强列表框 ――VB6控件LISTVIEW使用指南 关闭MDI窗体中所有的子窗体-VB资料 规范设计Windows应用软件菜单-VB资料 VB建立可滚动的视区 -VB资料 VB建立可下拉选择的属性 -VB资料 VB建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 VB利用 UnloadMode 来控制窗体的卸载? 高分寻求《数据结构-C++语言描述》书友,来者有分 谁知道哪儿能下载access的jdbc驱动程序吗? 好消息,Win2000下自定义报表问题! ATL里使用静态库的问题 我看不见你们问题的内容 试试难不难??HELP 请问如何禁止浏览器的退回按钮 怎样在客户端实现连接服务器的数据库,不装oracle的客户端 怎么获得地址 怎样使UltraEdit可以编译Java? 菜鸟问题:我建立一个工程后,用ClassWizard增加了一个类,它的基类是CTreeView,当我编译的时候出现错误,提示我的基类是不明确的,这是为什么 这个错误是因为什么?Exception in thread "main" java.lang.NoClassDefFoundError:Example 为什么接到集线器上的网线会一闪一闪的! insert into的问题,看是简单,但却不简单。。。 vb绘图问题 请问加入什么代码才能在下面的程序中实现分页!??谢谢! 如何判断局域网内另一台机器上的一个NT服务是否启动? 一各递归的问题。 寻求有关NAND FLASH 和支持他的文件系统的中文资料 Access数据库应该用什么数据库引擎驱动? 各位,谁有InstallShield Express 3.53 15天使用版的激活码阿 ado 中的数据库动态查询 好久没上来了,请大家谈一谈portal吧..... 连接 Access数据库应该用什么数据库引擎驱动? 怎么做到你在Copy文件,遍历目录时.进度条和操作过程一至呢? 如何在XP下设置打印机的纸张 请问如何获取DataList的EditItemTemplate中的自定义控的属性? asp.net(C#)里,如何判断一个数据库的字段是否为null? 世界杯和队歌集锦 在汇编中,如何实现延时 Outlook的问题,很急!!!在线等!!! 小弟最近需要注册一国际域名,可否提供一个地方? 诚征MCSD考友,本人上地上班 请大家指教 请教各位一个关于ADO的问题,很奇怪 应用程序性能评测器 (APE,Application Performance Explorer)大家有没有使用经验?来交流以下了! 关于outlook express和MSN Messager的问题 我想从指定的文件初始化 Bitmap 类的新实例。我怎样才能更改那个新实例的大小和分辨率呢? 各位软件开发人员:大家都看到了IT市场的不景气,你们各自有什么看法,请发表意见!!! 送分了! 菜鸟提问: 用TDBNavigator + DBGrid删除记录时,会弹出一个英文的删除确认对话框,请问如何去掉该对话框? 急!!!win2000 server安装server pack 2重新启动进入系统后,一切都变成黑白的了???怎样解决?谢谢! 大家帮忙,哪里有datalist中绑定datalist或者datagrid的例子啊? 分啊 程序发布 dephi中用哪个函数可以解决两个日期的差,要求精确到分钟! 谁知道ipvod的透屏技术? 怎么从没有信任关系的网域的机器B上copy文件?有一个可以访问B的账号和密码. jsp中如何实现树状结构? applet 与servlet的通讯 请问如何分析一种树脂的成分? 桶装的纯净纯净水打开以后保质期是多久?饮水机上 吊扇灯拉绳开关断了怎么修?吊扇灯,风扇开关坏了,具体是开关拉绳断了,从外面接的话 接不了.只能从内部接,如何操作?注意事项是什么? 求电子高人.可以把档位式的电扇调速器接在电烙铁上实现调温的目的吗?50W的烙铁,乘风牌1400mm的调速器,5档的 葡萄酒酿造过程中为什么要加二氧化硫? 磁铁怎样切开 为什么身上带那么多静电啊?要入个学还得提个问题先,那就问个吧,静电是怎么回事呢?脱个衣服那么电,连火钳子也带电. 二氧化硫的含量对葡萄酒有什么作用 磁铁摔断了以后为什么不能再吸在一起?为什么会代同种极性? 冬天身上容易带静电是什么原因? 220v单项电机正反转接线方法,开关是采用正泰HY2-12倒顺开关, 机械能和动能有什么差别拜托啦!怎样区别它们 一个火车车皮是装60吨吗?多少立方呀? 220v单项电机正反转接线方法,开关是采用正泰HY2-12倒顺开关,电机内部输出六根线,主要是在开关上怎么接 机械能和动能有什么区别只知道机械能是动能的一类 树脂胶粉有腐蚀性吗? 220v电机 ,电机4根线.这个倒顺开关怎么装? 动能和机械能的区别? 被子上有静电,怎么弄掉被子上有静电,睡觉的时候这样很不舒服,被电着了很痛.谁有没有什么小窍门可以去除静电. 220v单项电机正反转接线方法,开关是采用正泰HY2-12倒顺开关,电机内部输出六根线, 怎样分辨磁铁与铁有两块形状一样的长方形铁块,其中一块是磁铁,另一块是不带磁性的普通铁块.在不借助任何工具的情况下,请分辨哪一块是磁铁,并说明区分过程. 如何清除被子的静电? 非洲什么高原被称为世界屋脊 如何区分磁铁和同样形状的铁只有这两个样子相同的磁铁和铁块 没有别的物体 这是个试验题 问是靠磁铁的什么性质如何区分的 被子起静电.怎么办? 被称为“世界屋脊”的是()高原. CaO+H2O方程式是什么? 冬天用容易产生静电的被子当被子```````冬天用容易产生静电的被子当被子,会有什么情况啊啊``就是会有什么病,会痒,会怎样怎样的?```谢谢你们的回答,让我长了见识啊``` 有“世界屋脊”之称的高原是哪里? 工业如何制备氧气? 被子有静电怎么办 动植物的启发自己想的! 先有一批煤从徐州运往镇江,由铁路运送.如果每节车皮装60吨,还缺3车皮才能全部运走;如果每节车皮多装22先有一批煤从徐州运往镇江,由铁路运送.如果每节车皮装60吨,还缺3车皮才能全部运 怎么判断蛇是有毒的还是无毒的? 马达220V是什么接法 一道数学题:现有一批煤从徐州运往镇江,由铁路运送,如果每节车皮装60吨,还缺三节车皮才能全部运走如果节车皮多装225吨其他物资,问原有煤多少吨,车皮有多少 电烙铁与白炽灯在额定电压和额定功率一样哪个散发的热量更多? 怎样区分无毒的蛇和有毒的蛇? 220v单向电机正反转接法 电灯开关怎么接?我家电灯有2个按钮.按钮A单独按下,大灯亮起.按钮B单独按下,小灯不亮.同时按下按钮A和B,两盏灯同时亮.如何才能让按钮A和B分别控制大灯和小灯呢? 怎样识别可受热无毒的塑料制品 电源内部由( )流向(  ) 金属靠( )导线,金属中的电流方向,跟( )定向移动的方向相反 请问树脂胶粉的具体化学名称 火车车皮吨位车型 车号 怎么区分 在金属导体中电移动的是自由电子,为什么在直流电路中电流的方向是从正极到负极呢 普通胶粉与塑化胶粉的区别多少目以上属于超细胶粉 矿泉水或纯净水保质期那么长,是否有添加剂或防腐剂之类的?我家这边没有自来水,地下水很脏,怀孕后至儿子现在一周半,我一直用农夫山泉和娃哈哈纯净水,最近突然想,它们保质期都一年,是 擦双面床的强力磁铁如何分开,不小心把两块吸在一起了,怎么也分不开,请问有什么办法,紧急啊 物质满足什么条件时可以用燃烧法测定氧气的含量 食品中不要添加防腐剂如何提高保质期我想知道在食品罐头中不添防腐剂这样提高保质期,是速食食品. 我国有"世界屋脊"之称的高原是? 氧气的特征是----------检验氧气的方法是---------------氧气的含量越高,木条燃烧越---------------- 气车发动机气缸没压力是什么原因 力学 关于动能 重力势能 机械能的变化情况例题 1.跳伞运动员从空中匀速下落,人和伞的 ( ) A.动能增加,重力势能减少,机械能不变 B.动能不变,重力势能减少,机械能减少 C.动能减少,重 在动植物得到了哪些启示的作文400字 初三化学.盐在人体的新陈代谢中十分重要,它可以维持血液中适当的酸碱度,并通过人体复杂的作用,产生消化液帮助消化.这里的盐是指( )A.氯化钙 B.硫酸钠 C.氯化钠 D.氯 220V电机反转是怎么回事? 崔雪莉跑男上骂脏话,“XX妈”,太那个了吧 一定量的so2与naoh溶液反应 所得产物中含有Na2SO和NaHSO3 物质的量之比为2:3则参加反应的SO2与NaOH的物质的量之比为 人体血液的ph值一般为7.35-7.45如果人体内co2不能顺利排出体外则人体血液的PH将________(变大、变小、不变有关的方程式是________-
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘