




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020/5/17,1,.,第2章WINSOCK编程基础与木马原理,2.1winsock概述2.2WINSOCK控件2.3winsock控件的基本应用2.4木马原理实验安排,2020/5/17,2,.,教学目的,了解windowssocket熟练掌握winsock控件的属性、方法、事件熟练使用winsock控件进行实际应用程序的开发了解木马原理,2020/5/17,3,.,2.1winsock概述,Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。Winsock是微软公司所提供的一套开放式网络程序设计接口,程序设计人员可以通过WinsockAPI的各项功能调用,设计出一套在Window操作系统下符合运行标准的网络应用程序VB编写网络程序主要有两种方式:1.winsockAPI2.winsock控件,2020/5/17,4,.,比较,WinSock控件优点:使用简单,工作量小。缺点:功能少,使用IP协议,仅支持TCP,UDP协议,需要WinSock控件(系统默认安装不带MSWINSCK.OCX文件)适合于初学者WinSockAPI优点:功能强大,支持多种协议,使用灵活。WinSockAPI调用的wsock32.dll(28K)或ws2_32.dll(69K)为Windows系统自带函数库不必担心缺少文件。缺点:使用复杂,编程量大,需要一定基础适合于要求较高的网络程序。,2020/5/17,5,.,2.2WINSOCK控件,2.2.1概述2.2.2WinSock的属性2.2.3WinSock的方法2.2.4WinSock的事件2.2.5简单的通信例程,2020/5/17,6,.,2.2.1概述,利用套接字控件可以与远程计算机建立连接,并通过用户数据文报协议(UDP)或者传输控制协议(TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。添加Winsock控件,部件”MicrosoftWinsockControl6.o”,2020/5/17,7,.,2.2.2WinSock控件的属性,1.本地机器1)LocalHostName属性返回本地机器名。在设计时是只读的,而且是不可用的。语法object.LocalHostName=string2)LocalIP属性返回本地机器的IP地址,格式是IP地址加点字符串(xxx.xxx.xxx.xxx)。在设计时是只读的,而且是不可用的。语法object.LocalIP=string,2020/5/17,8,.,2.2.2WinSock控件的属性,3)LocalPort属性返回或者设置所用到的本地主机的通信端口。在设计时是可读/写的,而且是可用的。对客户来说,该属性指定发送数据的本地端口。在建立起连接之后,这就是用于TCP连接的本地端口。对于服务器来说,这是用于侦听的本地端口。语法object.LocalPort=long(0端口65535),2020/5/17,9,.,2.2.2WinSock控件的属性,2.通信协议Protocol属性返回或设置Winsock控件所使用的协议或者是TCP,或者是UDP。语法object.Protocol=protocolprotocol的设置值是:sckTCPProtocol:0,缺省的。TCP协议。sckUDPProtocol:1,UDP协议。说明在能够重新设置属性之前必须(用Close方法)关闭控件。,2020/5/17,10,.,2.2.2WinSock控件的属性,3.远程主机1)RemoteHost属性返回或设置远程计算机名,控件向它发送数据或从它那里接收数据。既可提供主机名,比如FTP:/,也可提供点格式下的IP地址字符串,比如。语法object.RemoteHost=stringString:远程计算机的名称或地址。,2020/5/17,11,.,2.2.2WinSock控件的属性,2)RemoteHostIP属性返回远程机器的IP地址。语法object.RemoteHostIP3)RemotePort属性返回或设置要连接的远程计算机的通信端口号语法object.RemotePort=long(0端口65535)Object:对象表达式,其值是“应用于”列表中的对象。Port:要连接的端口。该属性的缺省值是80。,2020/5/17,12,.,2.2.2WinSock控件的属性,4.State属性返回控件的状态,用枚举类型来表示。在设计时是只读的,而且是不可用的。,2020/5/17,13,.,2.2.3WinSock控件的方法,1.指定本地IP和端口Bind方法用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序不能再使用这个端口。如果有多协议适配卡,就用这个方法。语法object.BindLocalPort,LocalIPLocalPort:用来建立连接的端口。LocalIP:用来建立连接的本地Internet地址。,2020/5/17,14,.,2.2.3WinSock控件的方法,2.连接Connect方法(客户端)用于向远程计算机发出连接请求object.ConnectremoteHost,remotePortremoteHost:要连接的远程计算机的名字remotePort:要连接的远程计算机的端口号3.侦听Listen方法(服务器端)创建套接字并将其设置为侦听模式。该方法仅适用于TCP连接。object.Listen,2020/5/17,15,.,4.接受新连接Accept方法(服务器)仅适用于TCP服务器应用程序。在处理ConnectionRequest事件时用这个方法接受新连接。object.AcceptrequestID5.关闭连接Close方法对客户机和服务器应用程序关闭TCP连接或侦听套接字。object.Close,2.2.3WinSock控件的方法,2020/5/17,16,.,6.发送数据SendData方法将数据发送给远程计算机。语法object.SendDatadataObject:对象表达式,其值是“应用于”列表中的对象。Data:要发送的数据。对于二进制数据应使用字节数组。,2.2.3WinSock控件的方法,2020/5/17,17,.,7.获取数据1)GetData方法获取当前的数据块并将其存储在变体类型的变量中。object.GetDatadata,type,maxLenData:在方法成功返回之后存储获取数据的地方。如果对请求的类型没有足够可用的数据,则将data设置成Empty。Type:可选的。获取的数据类型。maxLen:可选的。在接收到字节数组或字符串时所需大小。,2.2.3WinSock控件的方法,2020/5/17,18,.,type的设置值是:,2020/5/17,19,.,2.2.3WinSock控件的方法,2)PeekData方法和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。该方法仅适用于TCP连接。语法object.PeekDatadata,type,maxLen,2020/5/17,20,.,2.2.4WinSock控件的事件,1.关闭连接、建立连接1)Connect事件(客户端)连接建立好可以进行通信时触发,当一个Connect操作完成时发生。语法object_Connect()object:所在处代表一个对象表达式,其值是一个Winsock控件。,2020/5/17,21,.,2.2.4WinSock控件的事件,1.关闭连接、建立连接2)Close事件当远程计算机关闭连接时出现。应用程序应正确使用Close方法关闭TCP连接。语法object_Close(),2020/5/17,22,.,2.2.4WinSock控件的事件,2.请求连接ConnectionRequest事件(服务器端)当远程计算机请求连接时出现。仅适用于TCP服务器应用程序。在请求一个新连接时激活该事件。语法object_ConnectionRequest(requestIDAsLong)requestID:新连接请求标识。应把此参数传递给第二个控件示例上的Accept方法。,2020/5/17,23,.,2.2.4WinSock控件的事件,3.发送数据过程1)SendProgress事件在发送数据期间出现。object_SendProgress(bytesSentAsLong,bytesRemainingAsLong)bytesSent:从上次激活事件以来已发送的字节数。bytesRemaining:在发送缓冲区等待发送时的字节数。,2020/5/17,24,.,2.2.4WinSock控件的事件,3.发送数据过程2)SendComplete事件在完成一个发送操作时出现。语法object_SendComplete,2020/5/17,25,.,2.2.4WinSock控件的事件,4.接收到新数据DataArrival事件当新数据到达时出现。object_DataArrival(bytesTotalAsLong)bytesTotal:Long。可获取的数据总数量。说明如果没有获取一个GetData调用中的全部数据,则事件不会出现。只有存在新数据时才激活事件。,2020/5/17,26,.,到底选择哪一种协议,通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,使用TCP协议,在收发数据之前先建立明确的连接。数据量是否特别大(例如图象与声音文件)?在连接建立之后,TCP协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。,2020/5/17,27,.,Winsock_TCP基础,数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。,2020/5/17,28,.,Winsock_TCP基础,如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArrival事件。调用DataArrival事件内的GetData方法就可获取数据。,2020/5/17,29,.,Winsock-UDP基础,用户数据文报协议(UDP)是一个无连接协议。跟TCP的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。为了传输数据,首先要设置客户计算机的LocalPort属性。然后,服务器计算机只需将RemoteHost设置为客户计算机的Internet地址,并将RemotePort属性设置为跟客户计算机的LocalPort属性相同的端口,并调用SendData方法来着手发送信息。于是,客户计算机使用DataArrival事件内的GetData方法来获取已发送的信息。,2020/5/17,30,.,2.2.5简单的通信例程,1.局域网内互相传递文本信息(简单聊天室程序,服务器与客户端不分开),2020/5/17,31,.,2.3winsock控件的基本使用,2.3.1获得本机的IP地址、主机名称2.3.2一对一通信(简单聊天程序)2.3.3同时连接多个客户端,2020/5/17,32,.,2.3.1获得本机的IP地址、主机名称,程序设计界面,代码:PrivateSubForm_Load()Label1.Caption=本机名称为:&Winsock1.LocalHostNameLabel2.Caption=本机IP为:&Winsock1.LocalIPEndSub,运行界面,2020/5/17,33,.,2.3.2一对一通信(简单聊天程序),局域网内互相传递文本信息(服务器与客户端分开UDP或者TCP),2020/5/17,34,.,2.3.3同时连接多个客户端,服务器端,服务器端设计界面,服务器端运行界面,2020/5/17,35,.,客户端,客户端界面设计图,客户端运行图,2020/5/17,36,.,设计一个多客户端的网络应用程序,必须有以下基本观念:,一个winsock控件只能够响应一个客户端的连接请求。因此,在允许主机端进行多客户端连接时,必须使用load语句的方式,动态加载winsock控件。主机端(服务器端)必须要先行设置一个作为监听本机的连接端口。在客户端提出连接的请求时,主机端必须提供尚未使用的winsock控件,供客户端使用。,2020/5/17,37,.,设计一个多客户端的网络应用程序,必须有以下基本观念:,在客户端的本机连接端口(localport)方面,必须要设置为“0”,这项操作会自动选用一个尚未使用的连接端口来与主机进行连接在主机端使用winsock控件getdata方法时,如果返回的属于字符串类型时,请将接受的数据声明为string变量。,2020/5/17,38,.,2.4木马原理,木马属于客户/服务模式。它分为两大部分,既客户端和服务端。其原理是一台主机提供服务(服务器端),另一台主机接受服务(客户端),作为服务器的主机一般会打开一个默认的端口进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 版权转让合同
- Unit 6 Lesson 36 教学设计 冀教版八年级英语上册
- 2025年新能源汽车行业反垄断合规风险前瞻报告
- 2025年分布式新能源在能源互联网中的应用与创新研究报告
- 中暑预案应急演练
- 2025年新能源行业安全管理新技术研发与应用前景分析
- 七年级英语上册 Unit 8 When is your birthday Section A 2a-3c说课稿(新版)人教新目标版
- 河湖洪涝风险防控与安全保障
- 2025年新能源企业数字化转型中的数字化转型风险评估报告
- 2025年氢能基础设施建设投融资风险控制与案例分析报告
- 《物联网技术》课件-第3章 无线传感器网络
- 保健行业员工知识培训课件
- 人民调解员培训课件
- 网约车全国公共科目考试题库与答案
- 胃手术并发症及处理
- 2025至2030 中国热成型钢(PHS)行业现状调查与前景策略研究报告
- 培训机构教务老师工作计划
- 《探索人工智能:机器翻译课件解析》
- 门机控制器调试手册
- 湖北省武汉市外国语学校2024-2025学年上学期10月九年级物理试题(含解析)
- 2025年上海市青浦区中考英语一模试卷
评论
0/150
提交评论