收藏 分销(赏)

网络分析本科毕设论文.doc

上传人:a199****6536 文档编号:6886899 上传时间:2024-12-23 格式:DOC 页数:19 大小:225.83KB
下载 相关 举报
网络分析本科毕设论文.doc_第1页
第1页 / 共19页
网络分析本科毕设论文.doc_第2页
第2页 / 共19页
网络分析本科毕设论文.doc_第3页
第3页 / 共19页
网络分析本科毕设论文.doc_第4页
第4页 / 共19页
网络分析本科毕设论文.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、摘 要 当今经济在发展,社会在进步。经济的发展和社会的进步对与俱进的网络的要求更高一层,更进一步。这种要求在对局域网中安全共享网络资源和有效管理网络资源方面体现的尤为突出。这次利用Delphi 7.0编程语言以及API函数等软件编写的局域网查看器,就是考虑到社会和人们生活的需求而模拟编写的。本局域网查看器根据网络编程的基本原理和操作系统提供的基本接口API函数库,开发出集计算机操作系统中网络基本功能为一体计算机网络管理软件。其主要功能体现在对局域网的管理上,比如枚举局域网上的所有终端设备、共享资源等基本操作功能模块,并且附加了对主机TCP/IP端口的扫描,发现其开放的端口,并对某些特定的端口实

2、时扫描、侦测等活动。另外还实现了远程控制模块、远程监视模块,以及对远程主机进行管理。关键词:网络编程;枚举网络资源;端口扫描;远程控制ABSTRACTToday, the economy is developing, and so does the society. The development of economy and the progress of society upgrade the request of Internet. This request is very more important in safety share the network resources and

3、in efficient manage the network resources.This time , the LAN Explorer , which is based on Delphi 7.0 software ,API (Application Programming Interface)function and so on ,is initiate by the peoples need. According to the basic principle of network programming and the basic interfaceAPI function libr

4、ary, we developed the computer network management software that gathers the basic network functions in computer operating system together. Its primary function embodies in the LAN management, such as listing all terminate device on LAN, basic operation function module like sharing resource etc. the

5、scan to TCP/IP port of host, found its opening ports, making real scanning and detection to some specific ports, and also we implemented the remote control module, remote monitoring module, and management to remote host.KEYWORDS: Network Programming, Listing Net Resource, Scanning Port, Remote Contr

6、ol目 录第一章 概述51.1 系统开发背景51.2开发系统设计目标51.3系统开发语言简介51.3.1 Delphi面向对象的编程工具51.3.2 Winsock网络编程5第二章 系统分析102.1系统开发可行性分析102.1.1 系统开发技术可行性分析102.1.2系统开发经济可行性分析102.1.3 系统开发操作可行性分析102.2需求分析102.2.1 系统功能要求102.2.2 性能要求102.2.3 环境要求10第三章 系统详细设计113.1 基本功能设计及其实现113.2 系统各功能模块123.2.1枚举网络资源模块设计123.2.2远程控制模块设计153.3 人机界面设计19第

7、四章 软件测试20结 束 语21谢 辞21参考文献22第一章 概述1.1 系统开发背景 随着经济和文化的进步,各个企业和公司的规模也在逐渐扩大。各公司各企业之间,需要交流共享的资源和数据也在成倍的增长。传统靠手工纪录和简单不互联的计算机网络上的资源已经远远不能满足企业发展以及经济进步对时间和降低劳动力的要求。于是,人们想到用局域网联网的技术简化繁琐的大量操作。1.2开发系统设计目标(1)枚举出网上邻居中的工作组及PC机以及共享资源。(2)可以按网段对PC机进行搜索。对特定的端口进行扫描。(3)可以对局域网中的PC机进行远程控制,比如远程关机发送消息等操作。(4)可以实现网络的搜索功能,保留历史

8、纪录添加了收藏功能。(5)在发现共享资源的同时可使用鼠标右键刷新资源并加入复制,下载功能。1.3系统开发语言简介采用Delphi 7.0 作为前台开发工具,结合使用windows的网络编程。1.3.1 Delphi面向对象的编程工具Delphi是美国Borland Software Corporation 公司的编程工具产品,它基于Pascal语言,具有语法严、结构清、可读性强和大马执行效率高等优点。最重要的是,它功能强大并且灵活易学。 Delphi 具有强大的数据库管理功能,新增RAVE组建能够实现精美报表打印功能,同时具有语言的易读与灵活性、快速友好的GUI开发等特点。Delphi 可以通

9、过多种方式访问各种数据库。Delphi一直坚持复杂问题简单化的思想,而且不隐藏其细节以适应不同层次的程序员。2000年8月,Delphi开发了其第七个版本,在这个版本中的新功能包括:(1) 企业应用的MDA开发。(2) 可视化的快速Web开发。(3) 内建的对Linux的跨平台支持。(4) 企业级的报表功能。(5) 免费的Datasnap多层应用开发。(6) Windows XP应用。此外,Delphi 还对其开发环境以及内核进行了比较大的改善;继续加强了和C+ Builder 的融合能力;进一步完善了DBexpress和网络相关组件。 1.3.2 Winsock网络编程1、 Winsock编

10、程发展史每种网络都有自己的“语言”,Internet上的“语言”就是TCP/IP网络通信协议。Internet实在UNIX系统上发展起来的,在UNIX上有许多成熟的网络接口,其中最通用的是一种叫做Sockets的接口。在20世纪80年代初,美国政府的高级研究工程机构为加州大学Berkeley分校提供资金,委托其在UNIX操作系统下实现通信协议TCP/IP的开发借口。他们的工作成果就是Socket,一般称之为“套接字”。在1991年前后,许多软件商都在加紧研制Windows吓得TCP/IP通信组件。为了能使组件标准化,并降低开发难度,他们决定Windows系统开发一套标准的、通用的TCP/IP编

11、程接口,并使之类似于UNIX下得Socket。到1994年,他被正式制定成一项标准,称为Windows Socket或称Winsock,并通过C语言的动态连接库方式提供给用户及软件开发者。Winsock主要经历了两个版本:Winsock1.1和Winsock2.0。Winsock2.0实际上是Winsock1.1的扩展,它向下兼容。2、 Winsock编程特点Socket在英文中是插座的意思,它的设计者实际上暗指电话插座。对程序员来说,Socket就像是一个文件指针只要向指针所指的文件读些数据。就可以实现双向通信。利用Socket进行通信,有两种主要的方式。第一种是面向连接的流方式。顾名思义,

12、这种方式下,两个通信的应用程序先要建立一种连接链路,只有确定这条通路之后,数据才能被正确地接受和发送。这种方式对应的是TCP协议,它通信可靠,对数据有校验和重发的机制,通常用来做数据文件的传输如FTP、Telnet。第二种叫做无连接的数据报文方式,它对应的是UDP协议。它取消了重发校验机制,能够达到较高的通信速率,可以用于对数据可靠性要求不高的通信,如实时的语音、图像传送和广播消息等。在ISO的OSI网络协议中,Winsock主要负责的是控制数据的输入和输出,也就是传输层和网络层。Winsock屏蔽了数据链路层和物理层,它的出现给Windows下的网络编程带来了巨大的变化。下面给出了这两种通信

13、方式的时序图:图1-1 两种通信方式时序图在网络通信中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回的现象,这种现象叫做阻塞。Winsock对可能阻塞的函数提供了两种处理方式阻塞合非阻塞方式。阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回;阻塞期间,除了等待网络操作的完成不能进行任何操作。非阻塞方式下,函数被调用后立即返回;当网络操作传送完成后,由Winsock给应用程序发送一个消息,通知操作完成,此时可以根据发送的消息传出的参数判断操作是否正常。所以,应尽量使用非阻塞方式编程。3、 Winsock基本的A

14、PI介绍(1)WSAStartup():初始化【函数原型】int PASCAL FAR WSAStartup(WORD wVersionRequested,LP lpWSADsta);Windows Socket由DLL形式提供,为了完成一系列的初始化操作,每一个使用Windows Socket的应用程序都必须进行WSAStartup()函数调用,并只有在成功地完成调用以后才能使用Socket。其参数wVersionRequested表示欲使用的Windows Socket API版本;这是一个WORD类型的整数,高位字节是次版本号,低位字节是主版本号。lpWSADsta是指向WSADATA资

15、料的指针。返回值:成功时返回0。失败返回如下可能值。WSASYSNOTREADY: 表示网络设备没有准备好。WSAVERNOTSUPPORTED: Winsock的版本信息号不支持。WSAEINPROGRESS: 一个阻塞式的Winsock1.1存在进程中。WSAEPROCLIM: 已经达到Winsock使用量的上限。WSAEFAULT: lpWSADsta不是一个有效的指针。(2)socket():创建一个Socket【函数原型】SOCKET socket(int af,int type,int proctocol);所有的通信建立之前都要创建一个Socket,该函数的功能与文件操作的fop

16、en类似。Af指address family(地址族),一般都填AF_INET,表示实在Internet上的Socket;Type是Socket的类型,当采用流连接方式是用SOCK_STREAM,用数据报文方式时用SOCK_DGRAM。Proctocol一般都为0,表示用对两种类型的Socket分别采用缺省的TCP和UDP传输协议。函数的返回值由Winsock定义的一种数据类型SOCKET,它实际上是个整型数据在Socket创建成功时,代表Winsock 分配给程序的Socket编号,后面调用传输函数时,就可以把它向文件指针一样使用。如果Socket建立失败,返回值为INVALID_SOCKE

17、T。(3)bind():创建的Socket指定通信对象【函数原型】int bind(SOCKET s,strut sockaddr_in* name,int namelen);成功创建了Socket之后,就应该选定通信对象。在bind()函数中,参数s是上一步创建好的套接字。Name是指向描述通信对象地址信息的结构体的指针,namelen是该结构体的长度。Sockaddr_in的定义如下:struct sockaddr_inshort sin_family;unsigned short sin_port;struct in_addr sin_addr;char sin_zero8;其中sin_

18、family是指一套地址族,通常被设成AF_INET;sin_port是指端口号;sin_addr是指IP地址族;sin_zero8主要是使该结构的大小和SOCKADDR结构大小相同(SOCKADDR结构由一个无符号short型和一个长度为14的char型数组构成,这个结构一共是16个字节),在sockaddr_in中添加这个长度为8的数组,使sockaddr_in的长度也为16(2+2+4+8),这样做的目的是使地址操作更方便。IP地址结构sin_addr的定义如下:Struct in_addrUnionStruct Unsigned char s_b1, s_b2, s_b3, s_b4;

19、 S_un_b;Struct unsigned short s_w1, s_w2; S_un_w;Unsigned long S_addr;S_un;(4) listen():设置等待连接状态【函数原型】int listen(SOCKET s,int backlog);对于服务器程序,当申请到Socket,并指定通信对象为INADDR_ANY之后,就应该等待一个客户机的程序来要求连接。Listen()就是把一个Socket设置这种状态的函数。参数backlog是等待连接的队列长度,可取15。如果当某个客户程序要求连接时,服务器已与其他客户程序连接,则后来的连接请求会被放到队列中,等待服务器空闲

20、的时候再与之连接。当队列达到指定长度时,再来的连接请求都被拒绝。(5)accept(): 接受连接请求【函数原型】SOCKET accept(SOCKET s,struct sockaddr_in *addr,int *addrlen);当没有连接请求时,对于阻塞方式,就进入等待状态,直至有一个请求到达为止。Accept()在接受到连接请求之后,回为这个连接建立一个新的Socket来与对方通信,并把它作为返回值。新建的Socket与原来的Socket有相同的性质,包括端口。原来的Socket被释放,用于继续等待其他的连接请求。而新生成Socket才是与客户端进行通信的实际Socket。所以一般

21、将参数中的Socket称作“监听”Socket,他只负责接收连接,而不负责会话;而对于accept()函数返回的Socket,把它称作“会话”Socket,他只负责与客户端通话。参数中的指针addr和addrlen用来返回客户机的sockaddr_in结构体,通过addr可得到客户机的IP地址和连接端口。前面的bind()、listen()和accept()函数都用于服务程序,属于被动等待的函数。对于客户程序,要主动提出连接请求,应使用connect()函数。【函数原型】int connect(SOCKET s,struct sockaddr_in *name,int namelen);其中s

22、是刚才建立的Socket,name与namelen的含义与使用方法与bind()相同,用来指定通信对象。如果连接失败,该函数会返回SOCKET_ERROR。(6) send()/recv(): 发送和接收数据【函数原型】int send (SOCKET s,char *buf,int len,int flags)int recv (SOCKET s,char *buf,int len,int flags)参数s是连接用的。Socket、buf和len是发送或接收的收据包及其长度,参数flags一般取0。Recv()函数实际上是读取send()函数发过来的一个数据包。当读到的数据字节少于规定接受

23、的数目时,就把数据全部接收,并返回实际接收到的字节数;当独到的数据多于规定值时,在流方式下剩余的数据由下个recv()读出,在数据报文凡是下多余的数据将被丢弃。这两个函数在出错时都返回SOCKET_ERROR。以数据报文方式通信地Socket,由于事先不用建立连接,所以可以跳过connect()而直接用recvfrom()和sendto()两个函数通信;int recvfrom(SOCKET s, char *buf, int len, int flags, struct sockaddr_infrom,int *fromlen)int sendto (SOCKET s, char *buf,

24、 int len, int flags, struct sockaddr_into,int *tolen)其中from、fromlen、to、tolen的含义和用法与bind()和connect()中的相同,分别表示接收和发送收据的对象。(7)closesocket():关闭socket【函数原型】closesocket(SOCKET s); 通信结束,关闭指定的Socket。第二章 系统分析2.1系统开发可行性分析2.1.1 系统开发技术可行性分析 现在流行的软件开发工具如Delphi 7.0,Visual Basic等均适合于开发该管理系统。本小组采用Delphi 7.0语言进行系统开发,

25、结合使用Microsoft的windows的网络编程。小组成员也有一定的专业技术水平,能够胜任该系统的开发任务。2.1.2系统开发经济可行性分析 系统在设计之初考虑到局域网管理的复杂需求,基于PC机开发结合小型局域网操作,实现对局域网的管理,节省了人力物力,以最小的代价提高网络效率。2.1.3 系统开发操作可行性分析该系统是完全的人机交互式界面,要求由一个主菜单构成,每一个主功能选项卡下都有详细的相关内容选项的分类,所采用的文字为简体中文,文字表述简单明确。无论是从功能使用的角度还是从文字的可理解性上,用户都一目了然、操作自如。同时设置了文件操作功能快捷键,使用户使用起来更方便、快捷。2.2需

26、求分析在设计系统之前,需要综合全面考虑系统功能、性能和环境要求。2.2.1 系统功能要求(1) 列举出网上邻居中的工作组及PC机以及共享资源。(2) 可以按网段进行搜索PC机。(3) 可以对局域网中的PC机进行远程的控制比如(远程关机,发送消息)(4) 可以实现网络的搜索功能,保留历史纪录添加了收藏功能。(5) 发现共享资源的同时可以使用鼠标右键刷新资源并加入复制,下载功能。2.2.2 性能要求(1) 实用性 :根据不同需要完成实在的功能,同时考虑到需求的潜在发展。(2) 易用性 :从用户角度出发设计简单易用的系统。 (3) 易维护性:要考虑到用户在使用本系统时能够进行简单的操作维护。(4)

27、可扩展性:软硬件采用符合规范的标准化结构,使系统将来易于扩充。2.2.3 环境要求(1) 支持本系统运行平台是Windows 2000或Windows xp的中文版。(2) 本系统必需在局域网(网内PC机至少两台以上)的环境下运行。(3) 网间保持畅通通信。第三章 系统详细设计系统详细设计的目的是:根据前面的分析(软件规格说明书关于功能的需求定义),选择设计实现模块功能的算法过程描述,为后面的设计提供依据和框架。在此重点介绍列举“网络邻居”中的工作组名称、用户计算机名称、共享目录和文件、共享打印机等资源3.1 基本功能设计及其实现在Delphi程序中,我们可以通过WIN API来列举局域网络中

28、的服务器名称、用户计算机名称、用户共享目录和文件、共享打印机等资源,这些API由文件MPR.DLL提供。下面以WIN 9X的对等网络为例子,列举“网络邻居”中的工作组名称、用户计算机名称、共享目录和文件、共享打印机等资源。(1)列举“网络邻居”中的工作组名称在“网上邻居”中,打开“整个网络”,可以看到网络中的所有工作组的名称。在Delphi程序中,可以用API函数WNetOpenEnum和WNetEnumResource来列举“网络邻居”中的工作组名称。(2) 获取网络类型信息局域网可以由多种类型的网络组成,如由Microsoft、Novell等类型的网络组成。用API函数WNetOpenEn

29、um和WNetEnumResource可获取网络类型信息。 (3) 获取工作组信息在获取网络类型信息后,可以根据此信息获取此类型网络中的服务器(工作组)信息。在WNetOpenEnum函数中,将参数lpNetResource指定为一种网络类型信息,可以获取一个句柄,在WNetEnumResource中利用这个句柄,可以获取一个NetResource类型的数组,每个NetResource元素的lpRemoteName部分即为一个工作组名称(如“MyWorkGroup”)。(4)列举一个工作组中的计算机名称在WNetOpenEnum函数中,将参数lpNetResource中的lpRemoteNam

30、e部分指定为一个工作组的名称(如“MyWorkGroup”),可以获取一个句柄,在WNetEnumResource中利用这个句柄,可以获取一个NetResource类型的数组,每个NetResource元素的lpRemoteName部分即为一个计算机名称(如“wangfajun”)。(5) 列举一个计算机中的共享资源在WNetOpenEnum函数中,将参数lpNetResource中的lpRemoteName部分指定为一个计算机的名称(如“wangfajun”),可以获取一个句柄,在WNetEnumResource中利用这个句柄,可以获取一个NetResource类型的数组,每个NetReso

31、urce元素的lpRemoteName部分即为计算机中的共享资源名称(可以是共享目录和文件名称、共享打印机名称等,如“wangfajun共享文件”)。3.2 系统各功能模块局域网查询系统工作组搜寻查询文件远程管理搜索工作组枚举工作组枚 组举 计工 算作 机条件查询刷新文件夹下在或复制重启或关机发送消息局域网查询系统图3-1 系统功能模块3.2.1枚举网络资源模块设计在Delphi程序中,我们可以通过Windows API来列举局域网络中的服务器名称、用户计算机名称、用户共享目录和文件、共享打印机等资源,这些API由文件MPR.DLL提供。在本模块中要用到的WNetOpenEnum、WNetEn

32、umResource和WNetCloseEnum这一组函数,下面将介绍这些函数的具体用法(1)WNetOpenEnum:开始枚举网络资源或者存在的连接。【函数原型】FUNCTION WNetOpenEnum(DwScope,/ 网络范围。/ RESOURCE_CONNECTED(已连接机器), / RESOURCE_CONTEXT(枚举呼叫者网络上下/文资源) RESOURCE_GLOBALNET(所有机器), / RESOURCE_REMEMBERED(已记忆的机器)dwType,/ 资源类型。/ RESOURCETYPE_ANY(所有资源),/ RESOURCETYPE_DISK(文件资源

33、),/ RESOURCETYPE_PRINT(打印资源)DwUsage / 资源用途。/ 0(所有资源),/ RESOURCEUSAGE_CONNECTABLE(所有可连接/ 资源),RESOURCEUSAGE_CONTAINER所/ container资源)仅在dwScope为/ RESOURCE_GLOBALNET是有效:DWORD;lpNetResource / NetResource类型指针,其内存/ 表示网络资源的层次, 为NIL时表示最上/ 层,仅在dwScope为RESOURCE_GLOBALNET/时有效,其它情况时应为NIL:PNetResource;varlphEnum /

34、 返回网络资源句柄。/是WNetEnumResource进一步列举网/络资源的依据:THandle):DWORD;返回值为NO_ERROR(执行成功)或ERROR_NO_MORE_ITEMS(资源列举完毕),否则应用GetLastError获取错误信息。(2)WNetEnumResource:其枚举一个WNetOpenEnum开启的网络资源。【函数原型】FUNCTION WNetEnumResource(hEnum:THandle; / WNetEnumResource进一步列举网/ 络资源的依据WNetOpenEnum取得varlpcCount:DWORD; /要取得资源的数目,/$FFFF

35、FFFF表示列出所有资源,返回/值为实际资源数目lpBuffer:Pointer; / 接收结果的缓冲区的/ 指针,一般是NetResource类型的/ 数组varlpBufferSize:DWORD / 接收结果的缓冲/ 区大小(Byte):DWORD;返回值为NO_ERROR(执行成功)或ERROR_NO_MORE_ITEMS(资源列举完毕),否则应用GetLastError获取错误信息。(3) WNetCloseEnum:结束网络的枚举。【函数原型】FUNCTION WNetCloseEnum(hEnum:THa.ndle; / WNetOpenEnu函数所构建的枚/ 举句柄)接着将介绍

36、在系统枚举模块的重要代码和注释。在做枚举资源的整个模块中,采用了Delphi中程序代码模块化编程的方法,对一些重要的代码段和在程序中利用率较高的代码段采用了单独的代码单元,以提高代码的重用性。在每局网络资源模块中,由于要对系统的运行性能提高,采用了首先枚举整个网络服务、工作组和正在活动的终端,对网络中具体的资源等到用户具体使用的时候,通过鼠标单击完成。下面列出了在程序执行时首先要做的对网络基本资源的枚举,即GetDomainThread_Unit单元的重要程序代码和注释:/*在此模块中采用的线程,线程从这里开始执行*/procedure TNetEnumThread.Execute; begi

37、n Synchronize(Initialize); / 对程序进行初始化,对一些状态进行赋值 TreeNode:=nil; LoadNetNode(nil); / 调用函数做真正的网络资源枚举end;/*初始化程序*/procedure TNetEnumThread.Initialize;begin with Main_Form do begin /在主窗口的状态栏写程序的状态 StatusBar.Panels0.Text := 正在打开网上邻居.; end;end;/*为树形列表添加子节点*/procedure TNetEnumThread.AddChildNode();begin Tre

38、eNode:=Main_Form.SearchTree.Items.AddChild(TreeNode,ChildNode); Treenode.ImageIndex:=imgIndex; Treenode.SelectedIndex:=selIndex;end;/*程序的主要代码,枚举网络的资源*/procedure TNetEnumThread.LoadNetNode(NetNode: PNetResourceA);var hEnum : THandle; /定义一个返回句柄,供WNetEnumResource使用 Count,BufSize: DWORD; NR,Buf: PNetRes

39、ourceA; Result: Integer; CurrentNode: TTreeNode;BeginResult:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY, 0,NetNode,hEnum); if Result NO_ERROR then exit; BufSize:=InitialSize; GetMem(Buf,BufSize); try while True do begin Count:=$FFFFFFFF; /读取所有的网络组 Result:=WNetEnumResource(hEnum,Count, Buf, Buf

40、Size); if Result = ERROR_MORE_DATA then /分配的内存不够 begin Count:=$FFFFFFFF; /读取所有的资源 FreeMem(Buf); GetMem(Buf,BufSize); /为枚举的资源分配内存 Result:=WNetEnumResource(hEnum,Count, Buf, BufSize); end; /该节点下所有的网络资源已经取得 if Result = ERROR_NO_MORE_ITEMS then Break; / /枚举完毕 if Result NO_ERROR then / /出错 begin ErrorS:=

41、无法打开局域网; synchronize(ShowError); exit; end; NR:=Buf; / / PNetResourceA类型,用于存放得到网络节点 while Count 0 do / /网络中有节点 begin CurrentNode:=TreeNode; / /取得当前节点 if NR.lpRemoteName nil then begin ChildNode:=StrPas(NR.lpRemoteName); end else ChildNode:=; imgIndex:=NR.dwDisplayType; / selIndex:=NR.dwDisplayType;

42、/加入资源节点 Synchronize(AddChildNode); /加入子节点 LoadNetNode(NR); TreeNode:=CurrentNode; INC(NR); DEC(Count); end; end; finally WNetCloseEnum(hEnum); / /关闭枚举网络句柄 FreeMem(Buf); / /释放内存 end;end;3.2.2远程控制模块设计 远程控制主要采用C/S模式,所以被监控的主机必须要装上客户服务程序,主要采用控制主机给被控主机发送命令,被控主机根据命令执行相应的代码。控制主机接受被控主机传来的信息进行判断和处理。下面是被控主机中的主

43、要代码和注释:procedure TMainForm.TCPReceiverExecute(AThread: TIdPeerThread);var StrReceived:String; StrMsg:TStrings; CmdId:Integer;begin try StrReceived:=AThread.Connection.ReadLn(#10#10); / /读端口的字符 StrReceived:=Trim(StrReceived); / /去掉空格 StrMsg:=TStringList.Create; StrMsg.AddStrings(ExtractStr(StrReceive

44、d,|); / /字符串分割 CmdId:=StrToInt($+StrMsg0); MonThreadId:=AThread; case CmdId of $0: / /CONNECT START,服务探测,连接到探测器 begin TCPSender.Host:=AThread.Connection.Socket.Binding.PeerIP; TCPSender.Port:=StrToInt(StrMsg1); TCPSender.Connect(); if(TCPSender.Connected=false) then begin exit; end; if(SenderThread.Terminated) then SenderThread.Execute else if(SenderThread.Suspende

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服