delphi--基于局域网的信息收发系统的设计与实现内容摘要:
虫等。 为企业中的信息交流带来了很大的安全性问题。 提出解决方案 根据企业在内部网络上信息交流的需求, 所以本课题就主要针对内部的网络来设计这样的一个即时通讯系统,本系统是 在基于局域网的在 IM 客户端和 IM服务器之间通讯采用的 UDP 协议和 C/S 软件构架技术上开发的通讯工具,它在 近程的即时通讯时彻底的脱离了远程的服务器,不通过远程服务器来完成实现通讯,避免了和远程服务器连接时过 多的浪费网络资源。 并且避免了服务器忙或与服务器无法连接时浪费过多时间用于和服务器建立连接,同时也为内网服务增强了许多的安全性,彻底的将通讯工具从互连网上搬到内网中来,这样一来就不会受到来自互连网的攻击了。 这种系统主要是为了方便了大中型企业在内部即时通讯要求,从而进一步提高 工作效率,增加企业的效益。 4 系统设计 系统总体架构 本系统主要是采用 C/S 结构,并且每个客户端也是作为服务器端的,当系统发送信息给局域网的用户,主要由单播模块和广播模块来实现,而其中的单播模块和用户信息模块是具有依赖性的,在接收信息的时候又 有两个模块来完成,一是信息接收的模块,另一个是信息查看的模块。 由此可以看出本系统主要分为两大部分模块:发送模块和接收模块。 发送模块:单播模块,广播模块,用户信息模块,信息记录模块接收模块:接收信息模块,查看信息模块 有了以上的了解了那让我们来看看系统的架构图: 第 7 页 共 25 页 图 4 系统架构图 界面设计 为了方便用户的操作,我采用比较简单的界面设计,主界面包括广播按钮、发送按钮、刷新按钮、在线用户显示框、信息输入窗体。 其中广 播按钮是将信息窗体中的内容发送到所有的用户;发送按钮是将信息窗体中的内容发送到指定的用户;在线用户显示框中选取指定的用户和查看用户的信息;刷新是重载用户列表。 系统主界面 (服务器 /客户) 单 播 发 送 广 播 发 送 接 收 信 息 显示用户信息 信 息 写 入 查看历史记录 工 作 组 IP 地 址 用 户 名 第 8 页 共 25 页 图 5 主界面 当有信息传过来时将自动弹出一个信息接收的窗体,窗体包括查看按钮和关闭按钮还有一个显示对方用户的区域,他们分别是用来打开并查看信息或是不想查看而关闭的作用。 图 6 信息接收界面 如过你在图 6 中点击了查看按钮,那么将会弹到显示信息查看的窗体上,在文本区则会显示对方传送过来的信息内容,在查看了之后有个关闭按钮,用来结束对话 框,便可以回到图 5 的界面了。 第 9 页 共 25 页 图 7 信息查看界面 在历史记录的窗体中点击记录文件按钮来选择保存的路径,将会自动生成一个文本文件来对通讯记录进行保存。 图 8 历史记录 系统功能模块设计 网络组件 UDP 协议由 TCP 协议衍生而来。 TCP 用于确保点对点的连接,而 UDP 并不保证发送的数据一定到达,也不表明数据报的传输成功或失败。 本系统设计使用的是 TIdUDPClient 和 TIdUDPServer 两个用户数据报( UDP)组件,首先创建 Delphi 工程。 然后向工程组再添加一个工程。 把一个工程作为客户,另一个作 为服务器。 为连接到 UDP 服务器,需要一个 TIdUDPClient 组件。 用来表示服务器的 IP地址和端口号。 由于 UDP 是无连接的,因此在 UDP 的接口方法中不包括 Connect 方法。 要使用 Inter Direct 实现的组件,只需使用Send 向给定的 IP 地址和端口号广播一个命令字符串。 其中我为 IP地址和端口号的设置分别为 和 9000。 服务器是作为应用程序实现的,它对客户程序发出的一个简单的命令集进行响应。 为实现服务 第 10 页 共 25 页 器,程序将监听 DefaultPort 端口上的广播,并将 设置为True。 下面是我对 TIdUDPClient 和 TIdUDPServer 组件的设置图: 图 9 TIdUDPClient组件设置 图 10 TIdUDPServer组件设置 用户信息显示功能 为了方便用户选取单个用户进行信息发送和查看在线用户的信息,所以设计了一个 ListView 来进行显示如图 5,在 ListView 中包括了用户名、工作组、 IP地址。 当有用户打开本系统的时候将会向局域网中的所有用户发送一个握手信息来获取网络中的在线用户信息并添加到列表中显示出来,同时也把自己的网络资源 信息发送给对方,使自己被添加到其他用户的列表中。 其中分别要对网络中的所有的用户名、工作组、 IP 地址进行获取,下面来看一下对于获取这些网络资源的代码部分。 1) 用户名获取代码如下: Function ( GroupName : string。 List : TStringList) : Boolean。 type TNetResourceArray = ^TNetResource。 //网络类型的数组 Var NetResource: TNetResource。 Buf: Pointer。 Count,BufSize,Res: DWord。 lphEnum: THandle。 Ind: Integer。 Temp: TNetResourceArray。 TmpStr:String。 第 11 页 共 25 页 Begin Result := False。 FillChar(NetResource, SizeOf(NetResource), 0)。 //初始化网络层次信息 := @GroupName[1]。 //指定工作组名称 := RESOURCEDISPLAYTYPE_SERVER。 //类型为服务器(工作组) := RESOURCEUSAGE_CONTAINER。 //已连接机器 := RESOURCETYPE_DISK。 //列举文件资源信息 //获取指定工作组的网络资源句柄 Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum)。 If Res NO_ERROR then Exit。 //执行失败 While True Do//列举指定工作组的网络资源 Begin Count := $FFFFFFFF。 //不限资源数目 BufSize := 8192。 //缓冲区大小设置为 8K GetMem(Buf, BufSize)。 //申请内存,用于获 取工作组信息 //获取计算机名称 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize)。 If Res = ERROR_NO_MORE_ITEMS then break。 //资源列举完毕 If (Res NO_ERROR) then Exit。 //执行失败 Temp := TNetResourceArray(Buf)。 For Ind := 0 to Count 1 do //列举工作组的计算机名称 Begin //获取工作组的计算机名称 tmpStr:=。 Delete(tmpstr,1,2)。 (tmpStr)。 (tmpstr)。 Inc(Temp)。 end。 end。 Res := WNetCloseEnum(lphEnum)。 //关闭一次列举 If Res NO_ERROR then exit。 //执行失败 Result := True。 FreeMem(Buf)。 end。 第 12 页 共 25 页 2) 工作组获取代码如下: var //显示所有工作组的名称 NetResource : TNetResource。 Buf : Pointer。 Count,BufSize,Res : DWORD。 //一个无符号的,占四个字节( 32)的整型 //句柄类型 lphEnum : THandle。 p : TNetResourceArray。 i,j : SmallInt。 NetworkTypeList : TList。 //返回局域网中的工作组名称 ………… //列出一个网络类型中的所有工作组名称 begin NetResource := TNetResource([J]^)。 //网络类型信息 //获取某个网络类型的文件资源的句柄, NetResource为网络类型信息, lphEnum为返回名柄 Res:=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum)。 if Res NO_ERROR then break。 //执行失败 while true do//列举一个网络类型的所有工作组的信息 begin Count := $FFFFFFFF。 //不限资源数目 BufSize := 8192。 //缓冲区大小设置为 8K GetMem(Buf, BufSize)。 //申请内存,用于获取工作组信息 //获取一个网络类型的文件资源信息 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize)。 if ( Res = ERROR_NO_MORE_ITEMS ) //资源列举完毕 or (Res NO_ERROR) /。delphi--基于局域网的信息收发系统的设计与实现
相关推荐
长诗《仙后》被认为是当时英国诗歌的代表作。 □ 大学 才子派“剧作家有约翰黎里、罗伯特格林、托马斯基德和克里斯托弗马洛等。 □ 马洛的三部悲剧是:《帖木儿》、《马尔他岛的犹太人》、《浮士德博士的悲剧》。 □ 莎士比亚创作的第一时期,主要是喜剧和历史剧,喜剧代表作:《威尼斯商人》、《无事生非》、《皆大欢喜》、《第十二夜》。 历史剧代表作:《亨利四世》上下篇、《亨利五世》。 □
土板或支撑上传递土石方或在支撑上搁置工具。 更换档土板支撑应先装后拆,拆除档土板 应待基础浇制完毕后与回填土时进行。 爆破作业安全措施 110kV 东华风电场送出线路工程 基础工程安全文明施工 保证 措施 14 人工向施工作业点运送爆破器材应遵守下列规定: 使用爆炸物品,严格遵守实消实报、剩余当日退库的制度,严禁乱丢乱放。 炸药和雷管必须分别携带,并装在专用箱(袋)内,严禁装在衣袋内。
示下次还会再来。 ( 2)长期靠门票来维持收入 因为瘦西湖景区没有其它参与性活动,所以它的大部分收入来自其昂贵的门票。 大约有 2/3 的游客觉得门票难以接受,而与其它同等级的景区相比,瘦西湖的门票的却让人难以接受。 就拿现在的旅游旺季举例,同样是国家 5A 级景区,我省中山陵门票为 80元,拙政园 70 元,水浒城 50 元。 再比北京故宫门票 60 元, 颐和园门票 50 元。 再看杭州西湖
表检查 标底及 投标文件的密封情况; ( 3)宣布工程招标标底; ( 4)确定评审区间 ①开商务标, 宣读投标人名称、投标价格、工期、和 投标文件的其他主要内容 (以投标人投标文件正本投标函中标注的投标报价金额为准); ②投标函的工期、签章符合招标文件要求; ③本工程设最高限价和最低成本控制价,高于最高限价和低于最低成本控制价的投标文件作 废 标处理。
理工作处 监控。 6. 铸造车间打捆过程中出 现混号铝锭,打捆人员必须 用记号笔在整捆(最上面铝锭熔炼号旁)上标注该捆内所含另一种熔炼号,并在当日班组日报中写清楚混号铝锭具体的熔炼号和原因。 现场管理工作 处 对化验品位一致的混号铝锭进行入库,并要在相应的质量证明书中标注混号铝锭的其它熔炼号, 贸易部在销售前要先向客户说明。 整捆 铝锭 熔炼号的 一致 性、 混号铝锭所含其它熔炼号的真实性