如何制作软件_第1页
如何制作软件_第2页
如何制作软件_第3页
如何制作软件_第4页
如何制作软件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如果真的诚心入行,那就先学习一个C语言吧,学习谭浩强的那本C语言程序设计,每一个例题都好好做一遍,上机调一遍,这就算编程基础学完了,而后学习VC,现在就学VC2005吧,学非托管的C+,编编界面,书有好多,不过,先找个什么VC.net入门之类的书学习,别找难的书,对新手打击太大! 学好这两门,你再来知道上问问吧,不过,估计你要学几个月呢,到时候如果悟性高,就可以自己知道下一步学什么东西了 祝你好运! 有空可以多上 上看看,挺不错的。刚开始学习编程,不用经常上网乱看,好好看好几本书就行了很多人对学习C语言感到无从下手,究竟怎样学习C语言? 第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便

2、于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。 第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。 第三:很多新型的语言都是衍生自C语言,C+,Java,C#,J#,perl.哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在

3、招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。 那么究竟怎样学习C语言呢? 1:工欲善其事,必先利其器 这里介绍几个学习C语言必备的东东: 一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C+,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。 一本学习教程,现在C语言教材多如牛毛,但推荐大家使用C语言程序设计谭浩强主编 第二版 清华大学出版社,此书编写的很适合初

4、学者,并且内容也很精到。 除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。 2:葵花宝典 学习计算机语言最好的方法是什么?答曰:读程序。 没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习

5、新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。 3:登峰造极 写程序的最高境界其实就是掌握

6、各种解决问题的手段(数据结构)和解决问题的方法(算法)。 是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。 那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会

7、选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。 答案补充 很多想学编程的朋友的都问过我这个问题,作为已经学过来的“过来人”我想我还是可以给你一些建议的: 1。首先你要有恒心,想学编程的人很多,最后坚持下来的却很少。 2。别问这么多,学就是了,一定要买本书认认真真的学,别下载,那样你肯定学不下去了。 3。从最简单的输入输出开始学,重要的是,半知不解的地方别管他,往下塄看,看着看着前面的问题有的自然你就明白了,还不懂再往前翻。 4。学好C C C JAVA 等等语言就很容易

8、上手了。 5。一定要多上机练习。 6。“遇到困难一定要耐心”记住这句话 7。没有一年你是看不见成果的。做好心里准备制作好程序之后,有很多作者都习惯用专业软件来给程序添加一个安装程序包。其实微软的2000和XP系统已经自带了一个小巧的制作安装软件iexpress,大小只有112KB,,存放在WindowsSystem32中。由于是微软自带的程序,所以制作的安装软件具有更好的兼容性。下面笔者就简单介绍该软件的使用方法,希望用这款软件来制作一个比较专业的安装程序包。 iexpress的使用方法很简单,只需在运行中输入iexpress就可以。虽然iexpress是一款英文软件,不过制作安装程序包采用的

9、是向导式,操作起来不算很难。在开始的时候有两个选项,一个是创建新的自解压指导文件,另一个是打开已经保存的自解压指导文件,这里我们选择第一个,然后点击下一步。接下来选择制作安装程序包的三种方式,分别是解压并运行安装、只解压并不运行安装和只压缩,根据自己的实际情况来进行选择。然后我们输入安装软件的名称,这里可以是英文,也可以是汉字。下面设置软件在安装前是否提示用户确认,通常情况选择不提示。 接下来添加“用户允许协议”,软件在使用过程当中有什么注意事项和要求都可以写到“用户允许协议”当中,只有用户都同意上面的条件才能正常继续安装。然后在下面添加要制作安装的软件,建立文件列表,并且还要指定安装过程中运

10、行的程序和相应的命令。接下来选择软件在安装过程中的显示模式,分别是默认、隐藏、最大和最小。 设置在软件安装完成后,提示是否显示提示语句,这里笔者建议选择显示。当一切设置完成后,这时候要设置自解压指导文件的保存位置和名称。这里面包含了软件安装过程中信息,建议保存,以备日后再修改。在下面来设置在软件安装完成后是否重启动,笔者建议如果没有什么特殊情况,不要选择重启电脑。 都设置好之后,最后开始制作软件安装包的过程,整个制作过程是在DOS下进行的,这样一个软件的安装程序包就制作完毕。网络和黑客编程基本知识 详细介绍黑客编程第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操

11、作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口大小或移动、单击鼠标等)该动作就会触发一个相应的“事件”系统每次检测到一个事件时,就会给程序发送一个“消息”,从而使程序可以处理该事件。每个Windows 应用程序都是基于事件和消息的,而且包含一个主事件循环,它不停地、反复地检测是否有用户事件发生。每次检测到一个用户事件,程序就对该事件做出响应,处理完再等待下一个事件的发生。Windows 下的应用程序不断地重复这一

12、过程,直至用户终止程序,用代码来描述实际上也就是一个消息处理过程的while循环语句。下面便简单介绍一下与 Windows 系统密切相关的几个基本概念:1:窗口:这是我要说的第一个概念。窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准的方框才叫窗口。其实窗口的概念很广,例如按钮和对话框等也是窗口,只不过是一种特殊化窗口罢了。从用户的角度看,窗口就是显示在屏幕上的一个矩形区域,其外观独立于应用程序,事实上它就是生成该窗口的应用程序与用户间的直观接口;从应用程序的角度看,窗口是受其控制的一部分矩形屏幕区

13、。应用程序生成并控制与窗口有关的一切内容,包括窗口的大小、风格、位置以及窗口内显示的内容等。用户打开一个应用程序后,程序将创建一个窗口,并在那里默默地等待用户的要求。每当用户选择窗口中的选项,程序即对此做出响应。2:程序:通常说的程序都是指一个能让计算机识别的文件,接触得最多的便是.exe型的可执行文件.3:进程:说到进程,学过操作系统的人都很清楚,所谓进程就是应用程序的执行实例(或称一个执行程序) 需要注意的是:进程是程序动态的描述,而上面说到的程序是静态的描述,两者有本质的区别。举个例子,从网上 Down了一个瑞星杀毒软件到C盘但没有运行,那个.exe 可执行文件叫做程序,它是一个二进制码

14、的文件。一旦双击了exe文件图标运行程序,那个“正在运行着的瑞星杀毒”便称为进程,它在双击的那一刻被系统创建,当你关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命。进程经历了由“创建”到“消亡”的生命期,而程序自始至终存在于你的硬盘上,不管你的机器是否启动。4:线程:线程是进程中的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一堆栈。进程本来就具有动态的含义,然而实质上是通过线程来执行体现的,从这个意义上说,Windows 中进程的动态性意义已经不是很明显了,只算是给程序所占的资源划定一个范围而已,真正具有动态性意义的是线程。5:消息

15、:我们几乎做每一个动作都会产生一个消息,鼠标被移动会产生WM_MOUSEMOVE消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息,鼠标右键按下便产生WM_RBUTTONDOWN消息等等。所有的这些都可以通过GetMessage,SendMessage等函数得到.6:事件:如在程序运行的过程中改变窗口的大小或者移动窗口等,都会触发相应的“事件”。7:句柄:单单一个“柄”字便可以解释它的意思了,我们天气热摇扇子的时候只要抓住扇柄便可以控制整个扇子的运动了,在程序中也差不多是这个意思。通常一个句柄就可以传递我们所要做的事情。有经验的成员肯定清楚,编写程序总是要和各种句柄打交道的,句柄是系

16、统用来标识不同对象类型的工具,如窗口、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。C+ 教材中给句柄下的定义是:“在Win32里,句柄是指向一个无值型对象(void *)的指针,是一个4字节长的数据”。从结构上看,句柄的确是一个指针,尽管它没有指向用于存储某个对象的内存位置,而实际上网络和黑客编程基本知识 (2)2009-06-18 09:54:18 来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.柄指向的是一个包含了对该对象进行

17、的引用的位置。在编程时,只要抓住了对象的句柄就可以对该对象进行操作了.8:API与SDK:API是英文 Application Programming Interface 的简称,意为“应用程序接口”,泛指系统为应用程序提供的一系列接口函数。其实质是程序内的一套函数调用,在编程的时候可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了.SDK是英文 Software Development Kit 的缩写,指“软件开发工具包”,在防火墙的设计中就经常涉及到SDK。第二节 Win API编程简介下面介绍一下WIN API.我们需要自己编写一个工具时,必然会用到很多操作wind

18、ows和控制windows的函数,这些函数就是windows API.API是Application Progamming Interface的缩写.就是说API是一系列已经定义的在windows内部的函数,是应用程序和系统之间的桥梁,应用程序通过调用API来请求系统完成一系列的任务.窗口,菜单,文件操作等都是通过API实现的.WIN32 API就是WINDOWS 32位平台的应用程序接口.现在可视化编程工具提供了大量控件,他们代替了API的功能.这些控件都是构建在WIN32 API之上的.是封装了的API函数集合.但是对于比较复杂和特殊功能(想我们的黑客编程)来说,就必须用API函数来实现.

19、WIN API存放在动态链接库(DLL)中,在98系统中,有32位的GDI32.DLL,KERNEL32.DLL,16位的GDI.EXE,KRNL386.EXE.API就存放在这些动态链接库中.木马和后门其实就是使用了文件操作函数,这里做简要介绍:删除文件:BOOL DeleteFile(LPCTSH lpFileName)复制文件:BOOL CopyFile()移动文件:BOOL MoveFile()等等具体的API可以上网自己去查看,有很多介绍API的书籍.第二节 Win API编程简介下面介绍一下WIN API.我们需要自己编写一个工具时,必然会用到很多操作windows和控制windo

20、ws的函数,这些函数就是windows API.API是Application Progamming Interface的缩写.就是说API是一系列已经定义的在windows内部的函数,是应用程序和系统之间的桥梁,应用程序通过调用API来请求系统完成一系列的任务.窗口,菜单,文件操作等都是通过API实现的.WIN32 API就是WINDOWS 32位平台的应用程序接口.现在可视化编程工具提供了大量控件,他们代替了API的功能.这些控件都是构建在WIN32 API之上的.是封装了的API函数集合.但是对于比较复杂和特殊功能(想我们的黑客编程)来说,就必须用API函数来实现.WIN API存放在动

21、态链接库(DLL)中,在98系统中,有32位的GDI32.DLL,KERNEL32.DLL,16位的GDI.EXE,KRNL386.EXE.API就存放在这些动态链接库中.木马和后门其实就是使用了文件操作函数,这里做简要介绍:删除文件:BOOL DeleteFile(LPCTSH lpFileName)复制文件:BOOL CopyFile()移动文件:BOOL MoveFile()等等具体的API可以上网自己去查看,有很多介绍API的书籍.第二节 Win API编程简介下面介绍一下WIN API.我们需要自己编写一个工具时,必然会用到很多操作windows和控制windows的函数,这些函数就

22、是windows API.API是Application Progamming Interface的缩写.就是说API是一系列已经定义的在windows内部的函数,是应用程序和系统之间的桥梁,应用程序通过调用API来请求系统完成一系列的任务.窗口,菜单,文件操作等都是通过API实现的.WIN32 API就是WINDOWS 32位平台的应用程序接口.现在可视化编程工具提供了大量控件,他们代替了API的功能.这些控件都是构建在WIN32 API之上的.是封装了的API函数集合.但是对于比较复杂和特殊功能(想我们的黑客编程)来说,就必须用API函数来实现.WIN API存放在动态链接库(DLL)中,

23、在98系统中,有32位的GDI32.DLL,KERNEL32.DLL,16位的GDI.EXE,KRNL386.EXE.API就存放在这些动态链接库中.木马和后门其实就是使用了文件操作函数,这本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:网络和黑客编程基本知识 (3)2009-06-18 09:54:18 来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.里做简要介绍:删除文件:BOOL DeleteFile(LPCTSH lpFileName)复制文

24、件:BOOL CopyFile()移动文件:BOOL MoveFile()等等具体的API可以上网自己去查看,有很多介绍API的书籍.第三节 Windows 网络协议首先介绍一下网络协议:网络协议是网络上所有设备之间通信规则的集合,他定义了通信时信息必须采用的格式和这些格式的意义.大多数网络协议都采用分层体系结,每一层都建立在他的下层之上,向他的上一层提供服务,而把如何实现这一服务的细节对上层加以屏蔽.一台设备上的第N层与另一台设备上的第N层进行通信的规则就是第N曾协议.在网络上的个层之间中存在着许多协议,接受方和发送方同层的协议必须一致,否则,一方就无法识别另一方发出的信息.网络协议使网络上

25、的设备各种设备能相互交换信息.常用的协议有:TCP/IP协议,IPX/SPX歇息等等.在局域网中常用的IPX/SPX协议.而访问INTERNET,就必须添加TCP/IP协议.TCP/IP协议是传输控制协议/互联网络协议.他规范了网络上所有设备的通信,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.在网络的各层中还存在着许多协议,下面列出部分网络协议规范:ARP 地址解析协议SNMP 网络管理协议BOOTP 让无盘站从一个中心服务器上获得IP地址DHCP 动态主机配置协议下面介绍网络7层协议在WINDOWS的实现:7层协议 WIN系统_7 应用层 7 应用程序_6 表示层 6 WINS

26、OCK API(DLL)_5 会话层 5 SPI(DLL)_4 传输层 4 TDI(VXD,SYS)_3 网络层 3 NDIS(VXD,SYS)_2 数据链路层 2 网卡驱动程序(VXD,SYS)_1 物理层 1 网卡_相信这个映射图可以让大家比较清楚了解他们的对应关系TCP协议图示应用程序协议 HTTP FTP TELNET传输协议 TCP UDP网际协议 IP物理层协议 网卡IP协议保证数据的传输,TCP协议保证数据传输的质量.TCP/IP协议基于四层结构:应用层,传输层,网络层,接口层,数据在传输时每通过一层就要在数据上加个头,其中的数据供接受端同层使用,在接收端,每经过一层就把头去掉,

27、来保证传输数据格式的一致.TCP头部结构:16位源端口号 16位目的端口号32位序列号32位确认号4位首部长度+6位保留字 6位标志 16位窗口大小16位效验和 16位紧急数据偏移量数据段IP头部结构:4位IP版本号 4位首部长度 8位服务类型 16位总长度本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:网络和黑客编程基本知识 (4)2009-06-18 09:54:18 来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.16位标示 3位标志和偏移8位

28、生存时间 8位协议 16位IP首部效验和32位源IP地址32位目的IP地址TCP头和数据第四节 关于服务器和客户端编程在网络编程中,最常用和最基础的就是WINSOCK. 现在我们讨论WINDOWS下的SOCKET编程.大凡在WIN32平台上的WINSOCK编程都要经过下列步骤:定义变量-获得WINDOCK版本-加载WINSOCK库-初始化-创建套接字-设置套接字选项-关闭套接字卸载WINSOCK库-释放资源下面介绍WINSOCK C/S的建立过程:服务器 客户端_1 初始化WSA 1 初始化WSA_2 建立一个SOCKET 2 建立一个SOCKET_3 绑定SOCKET 3 连接到服务器_4

29、在指定的端口监听 4 发送和接受数据_5 接受一个连接 5 断开连接_-6 发送和接受数据_7 断开连接_大家注意,在VC中进行WINSOCK编程时,需要引入如下两个库文件:WINSOCK.H(这个是WINSOCK API的头文件,WIN2K以上支持WINSOCK2,所以可以用WINSOCK2.H);Ws2_32.lib(WINSOCK API连接库文件).使用方式如下:#include #pragma comment(lib,ws2_32.lib)下面我们通过具体的代码演示服务器和客户端的工作流程:首先,建立一个WSADATA结构,通常用wsaDataWSADATA wsaData;然后,调

30、用WSAStartup函数,这个函数是连接应用程序与winsock.dll的第一个调用.其中,第一个参数是WINSOCK 版本号,第二个参数是指向WSADATA的指针.该函数返回一个INT型值,通过检查这个值来确定初始化是否成功.调用格式如下:WSAStartup(MAKEWORD(2,2),&wsaData),其中MAKEWORD(2,2)表示使用WINSOCK2版本.wsaData用来存储系统传回的关于WINSOCK的资料.if(iResuit=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf(WSAStartup failed:%d,GetLast

31、Error(); /返回值不等与0,说明初始化失败ExitProcess(); /本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:网络和黑客编程基本知识 (5)2009-06-18 09:54:18 来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作./退出程序应用程序在完成对请求的SOCKET库使用后,要调用WSACleanup函数来接触SOCKET库的绑定,并且释放资源.注意WSAStartup初始化后,必须建立一个SOCKET结构来保存SOCKET

32、句柄.下面我们建立一个SOCKET.首先我们建立一个m_socket的SOCKET句柄,接着调用socket()函数,函数返回值保存在m_socket中.我们使用AF_INFE,SOCK_STREAM,IPPROTO_TCP三个参数.第一个表示地址族,AF_INFE表示TCP/IP族,第二个表示服务类型,在WINSOCK2中,SOCKET支持以下三种类型;SOCK_STREAM 流式套接字SOCK_DGRAM 数据报套接字SOCK_RAW 原始套接字第三个参数表示协议:IPPROTO_UDP UDP协议 用于无连接数据报套接字IPPROTO_TCP TCP协议 用于流式套接字IPPROTO_I

33、CMP ICMP协议用于原始套接字m_socket=socket(AF_INFE,SOCK_STREAM,IPPROTO_TCP); /创建TCP协议以下代码用于检查返回值是否有错误:if(m_scoket=INVALID_SOCKET)prinrf(Error at socket():%dn,GetLastError();WSACleanup(); /释放资源return;说明,如果socket()调用失败,他将返回INVALID_SOCKET.为了服务器能接受一个连接,他必须绑定一个网络地址,下面的代码展示如何绑定一个已经初始化的IP和端口的Socket.客户端程序用这个IP地址和端口来连

34、接服务器.sockaddr_in service;service.sin_family=AF_INET; /INTERNET地址族service.sin_addr.s_addr=inet_addr(); /将要绑定的本地IP地址service.sin_port=htons(27015); /27015将要绑定的端口下面我们调用BIND函数,把SOCKET和SOCKADDR以参数的形式传入,并检查错误.if(bind(m_socket,(SOCKADDR*)&SERVICE,sizeof(service)=SOCKET_ERROR)printf(bind() failed.n)

35、;closesocket(m_socket);return;当绑定完成后,服务器必须建立一个监听队列,以接受客户端的请求.listen()使服务器进入监听状态,该函数调用成功返回0,否则返回SOCKET_ERROR.代码如下:if(listen(m_socket,1)=SOCKET-ERROR)printf(error listening on socket.n);服务器端调用完LISTEN()后,如果此时客户端调用CONNECT()函数,服务器端必须在调用ACCEPT().这样服务器和客户端才算正式完成通信程序的连接动作.一旦服务器开始监听,我们就要指定一个句柄来表示利用ACCEPT()函数

36、接受的连接,这个句柄是用来发送和接受数据的表示.建立一个SOCKET句柄Socket AcceptSocket 然后利用无限循环来检测是否有连接传入.一但有连接请求,ACCEPT()函数就会被调用,并且返回这次连接的句柄.printf(waitong for a client to connect.n);while(1)AcceptSocket=SOCKET_ERROR;while(AcceptSocket=SOCKET_ERROR)AcceptSocket=accept(m_socket,NULL,NULL);下面看客户端端代码:sockaddr_in clientService;clien

37、tService.sin_family=AF_INET; 本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:网络和黑客编程基本知识 (6)2009-06-18 09:54:18 来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.; /INTERNET地址族clientService.sin_addr.s_addr=inet_addr(); /将要绑定的本地IP地址clientService.sin_port=htons(27015);

38、/27015将要绑定的端口下面调用CONNECT()函数:if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) = SOCKET_ERROR)printf( Failed to connect.n );WSACleanup();return; /如果调用失败清理退出/调用成功继续读写数据到这里,服务器和客户端的基本流程介绍完毕,下面我们介绍数据交换.send():int sendSOCKET s, /指定发送端套接字const char FAR?*buf, /指明一个存放应用程序要发送的数据的缓冲

39、区int len, /实际要发送的数据字节数int flags /一般设置为0;C/S都用SEND函数向TCP连接的另一端发送数据.recv():int recvSOCKET s, /指定发送端套接字char FAR?*buf, /指明一个缓冲区 存放RECC受到的数据int len, /指明BUF的长度int flags /一般设置为0;C/S都使用RECV函数从TCP连接的另一端接受数据首先看客户端的代码:#include #include #pragma comment(lib, ws2_32.lib)void main() / 初始化 Winsock.WSADATA wsaData;i

40、nt iResult = WSAStartup( MAKEWORD(2,2), &wsaData );if ( iResult != NO_ERROR )printf(Error at WSAStartup()n);/ 建立socket socket.SOCKET client;client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );if ( client = INVALID_SOCKET ) printf( Error at socket(): %ldn, WSAGetLastError() );WSACleanup();return;/ 连

41、接到服务器.sockaddr_in clientService;clientService.sin_family = AF_INET本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:网络和黑客编程基本知识 (7)2009-06-18 09:54:18来源:互联网网络和黑客编程基本知识第一节 了解Windows机制Windows 是一个“基于事件的,消息驱动的”操作系统。在Windows下执行一个程序,只要用户进行了影响窗口的动作.; clientService.sin_addr.s_addr = inet_addr( );clientService.sin_port

42、 = htons( 27015 );if ( connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) = SOCKET_ERROR) printf( Failed to connect.n );WSACleanup();return;/ 发送并接收数据.int bytesSent;int bytesRecv = SOCKET_ERROR;char sendbuf32 = Client: Sending data.;char recvbuf32 = ;bytesSent = send( client, sendbu

43、f, strlen(sendbuf), 0 );printf( Bytes Sent: %ldn, bytesSent );while( bytesRecv = SOCKET_ERROR ) bytesRecv = recv( client, recvbuf, 32, 0 );if ( bytesRecv = 0 | bytesRecv = WSAECONNRESET ) printf( Connection Closed.n);break;if (bytesRecv 0)return;printf( Bytes Recv: %ldn, bytesRecv );return;下面是服务器端代码

44、:#include #include #pragma comment(lib, ws2_32.lib)void main() / 初始化WSADATA wsaData;int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );if ( iResult != NO_ERROR )printf(Error at WSAStartup()n);/ 建立socketSOCKET server;server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );if ( server = INVALID_SOCKET )

45、 printf( Error at socket(): %ldn, WSAGetLastError() );WSACleanup();return;/ 绑定socketsockaddr_in service;service.sin_family = AF_INET;service.sin_addr.s_addr = inet_addr( );service.sin_port = htons( 27015 );if ( bind( server, (SOCKADDR*) &service, sizeof(service) ) = SOCKET_ERROR ) printf(

46、bind() failed.n );closesocket(server);return;/ 监听 socketif ( listen( server, 1 ) = SOCKET_ERROR )printf( Error listening on socket.n);/ 接受连接SOCKET AcceptSocket;printf( Waiting for a client to connect.n );while (1) AcceptSocket = SOCKET_ERROR;while ( AcceptSocket = SOCKET_ERROR ) AcceptSocket = accept( server, NULL, NULL );printf( Client Connected.n);server = AcceptSocket;break;/ 发送接受数据int bytesSent;int bytesRecv = SOCKET_ER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论