DELPHI下的SOCK编程分析和总结.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

DELPHI下的SOCK编程

本文是写给公司新来的程序员的,算是一点培训的教材。本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识。

题外话:我认为学习编程就如同学习外语一样,最好的方式是你先学会如何去运用它,然后才是了解它的语言特性、语法之类的东西。不过很可惜,我们以前的外语教育使用了相反的过程。软件编程也是一样,在很多人的大学阶段,你更多的是学习那些理论知识,学习“语法”,这里,我丝毫没有贬低理论知识重要性的意思。理论知识和实践是相辅相成的,但一个恰当的学习方式,很多时候可以让学习者得到事半功倍的效果。例如你学习《数据结构》中排序的概念,我们假设对此概念你学习的非常出色,你脑子中有大量关于不同排序方法优劣的思想,你也自己琢摸出了很多奇妙的构思,但你没有丝毫编写代码的基本功,你所有一切的niceidea都只能停留在你的脑子中,你甚至不知道在实践运用中,这些idea是否可行,实践是检验真理的唯一标准。倘若你先具备了一些可以用于实践的基本技能,再去学习那些概念,我想,你可以很好的将”冒泡排序“实现出来,然后在这种实现和理论的结合中不断的前行。本文会从DELPHI7中的TServerSocket等组件出发,边用边学,直到API以及那些所谓的”思想“。

“当你相信并不理解的东西时,你就会受罪了。迷信不是办法”。--SteviceWonder

RAD使得程序的编制更方便和快捷,即使没有经受专业的训练,依然可以写出完成一些功能的程序,在我现在的公司内部,有时候我会问公司的新员工,你为什么这样写,你的代码是怎么运行的?“不知道,反正可以运行。”我认为对于准备在Win32开发领域做下去的程序员来说,这是悲哀的。前面已经说了,本文最终的目的不是简单的组件使用,而是让读者可以了解到Winsock的API以及DELPHI7中TServerSocket等VCL组件的编写。我始终认为对于一名合格的win32程序员来说,无论你使用什么工具编写代码,你都应该深入底层,起码你应该了解WinAPI,否则的话,在面对那些组件错误的时候,你只能莫名其妙的扣着脑袋,在编程的道路上,最多也只能成为一名熟练的”搬运工“。

阅读本文,你起码应该具备对ObjectPascal的了解,如果能有一点UML的知识就更好了,因为文中会包含一些这方面的图形。

WINSOCK的基本概念

在Win32平台下进程网络编程,对于众多的基层网络协议,Winsock是访问它们的首选接口。而且在每个Win32平台上,Winsock都以不同的形式存在着。

要说明的是,Winsock是网络编程接口,而不是协议。它从Unix平台的Berkeley(BSD)套接字方案借鉴了许多东西,后者能访问多种网络协议。在Win32环境中,Winsock接口最终成为一个真正的“与协议无关”接口,尤其是在Winsock2发布之后。

Winsock的API是建立在套接字基础上的。所谓套接字,就是一个指向传输提供者的句柄。Win32中,套接字不同于文件描述符,所以它是一个独立的类型—SOCKET。

第一个程序

在了解那些组件和API之前,我们先来使用一下。下面的程序非常的简单,只是一个在服务器和客户机之间建立连接并通讯的程序。如果你已经使用TServerSocket以及TClientSocket做过客户端服务器的通讯程序,那么下面的内容你完全可以跳过。

我们使用TServerSocket组件来建立服务器端的程序。

它包含两个memo组件,用来分别处理接收到的数据和发送的数据,然后再在窗体上方一个TServerSocket组件,ServerType设置为stNonBlocking,Port设置为100,active设置为true,

写几句简单的代码如下:

{

作者:wudi_1982

联系方式:wudi_1982@转载请著名出处

}

unitUnit1;

interface

uses

Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ComCtrls,StdCtrls,ScktComp;

type

TForm1=class(TForm)ServerSocket1:TServerSocket;Memo1:TMemo;

Button1:TButton;StatusBar1:TStatusBar;Memo2:TMemo;

procedureServerSocket1ClientConnect(Send

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档