实验7

合集下载

7_实验七_母液配制

7_实验七_母液配制
2,4–D母液(1mg/ml):准确称量2,4-D 100mg,先用1~3ml 90% 乙醇完全溶解后,加蒸馏水定容;也可以加入少量碱(如1mol/L氢 氧化钾、氢氧化钠)溶液,使之中和成为钠盐或钾盐,在水中溶解, 再加水定容至100ml,即配成浓度为1mg/ml的母液。 6–BA母液:准确称取6–BA 100mg,应先用少量0.5或1M的盐酸或 氢氧化钠溶液溶解,然后加蒸馏水定容至100ml,即配成浓度为 1mg/ml的母液。
目的: 目的: 了解和掌握植物组织和细胞培养的基本方法及要点 了解植物组织、细胞培养培养基的主要成分 掌握培养基母液中各部分的配制方法 原理: 原理: 生物体的每一个细胞都包含有该物种所特有的全套遗传物质, 在一定条件下,都能进行生长和发育。人为提供合适的光、 温、水、气、热等环境条件和植物生长所必须的各种营养成 分(培养基),可以使离体细胞、组织按照一定的方式生长 和分化。 无机营养物、 组成植物组织、细胞培养基的成分包含五大类:无机营养物、 无机营养物 碳源、维生素、有机附加物和生长调节物质。 碳源、维生素、有机附加物和生长调节物质
实验报告及作业: 实验报告及作业:完成下列表格
药品试剂名 母液浓度 (倍数) 称 倍数) 大量元素 (MS1) 微量元素 (MS2) 铁盐(Fe铁盐 EDTA.Na2) 有机成份 2,4-D 6-BA 蔗糖 琼脂 20 × 200 × 200 × 200 × 1 mg/ml 1 mg/ml / / 0.2mg,即 即 2 mg,即 即 30 g 10 g µl ml 配制1000ml需 需 配制 取用的母液量 50 ml 配制500ml需取 配制 需取 配制200ml需取 配制 需取 用的母液量 用的母液量
1650 1900 225* 370 440 22.3 8.6 0.83 6.2 0.25 0.025 0.025 / / / / / / /

大学计算机实验7报告

大学计算机实验7报告

实验七课程名称:大学计算机实验项目名称:互联网与网络安全2)打开要收藏的网站,点击右上方的小星星,并在弹出的小对话框中完成设置之后点击完成,即可完成收藏。

2.在知网平台搜索一篇文献(关键词为:计算机+医学),并下载,同时查看文件下载位置,打开下载文件的目录。

(P201)1)通过深大内部网图书馆打开知网,在最中间的位置输入“计算机医学”点进第一个机医学应用”找到第一个文件右侧的一个小小的下载符号,下载完成后在右上角的下载点击“打开文件所在位置”即可打开并查看文件所在目录。

3.安装一款杀毒软件(例如360杀毒,金山杀毒等,机房如果有则不用安装,学会操作即可),并对磁盘进行快速扫描杀毒。

(P212,处使用McAfee)1)直接打开“我的电脑”右键磁盘,在弹出的菜单中选择“扫描”,就会弹出杀毒界面正在对磁盘扫描并杀毒。

4. 打开和关闭windows防火墙,并添加例外程序。

(P226-228)1)由于这些设置由供应商应用程序迈克菲个人防火墙管理,我们打开迈克菲,找到防火墙,点击关闭并选择关闭时长后再次点击关闭,即可关闭防火墙。

2)打开“控制面板”点入“系统和安全”,点击“Windows Defender 防火墙”下面的“允许应用通过防火墙”,点击“允许其他应用”,点击“路径”旁的浏览,找到应用的位置并双击,再点击“网络类型”完成设置,点击确定,最后点击添加即可。

思考题:1.扫描文献时不同时间和不同检索平台(万方、知网等),检索结果和实验指导描述不同,请解释为什么。

答:不同检索平台的资源库不同,以及检索的方式也不一定相同。

同一个平台,不同的时间检索的结果可能由于资源库的更新导致结果不一样。

实验七探究影响酶活性的因素

实验七探究影响酶活性的因素

实验七探究影响酶活性的因素一、实验目的:1.探究不同温度和PH对酶活性的影响;2.培养实验设计能力。

二、探究温度对酶活性的影响(一)实验原理:1.淀粉遇碘后,形成紫蓝色的复合物。

2.淀粉酶可以使淀粉逐步水解成麦芽糖和葡萄糖,麦芽糖和葡萄糖遇碘后不显色。

注:市售a-淀粉酶的最适温度约600C(二)方法步骤:1、取3支试管,编上号(A、B、C),然后分别注入2mL可溶性淀粉溶液;2、另取3支试管,编上号(a、b、c),然后分别注入1mL新鲜淀粉酶溶液;3、将装有淀粉溶液和酶溶液的试管分成3组,分别放入热水(约600C)、沸水和冰块中,维持各自的温度5min;思考题1、不能只用不同温度处理淀粉溶液或酶溶液,这是为什么?4、分别将淀粉酶溶液注入相同温度下的淀粉溶液中,摇匀后,维持各自的温度5min;5、在3支试管中各滴入1-2滴碘液,摇匀后观察这3支试管中溶液颜色变化并记录;思考题2、在试管A、B、C中分别能观察到什么现象?思考题3、通过上述实验,你能得出什么结论?思考题4、在上述实验中,自变量是什么?无关变量是什么?三、探究PH值对酶活性的影响(一)实验原理:思考题5、请依据下面所列实验操作步骤,写出该实验的实验原理。

思考题6、请在上表中填入你所观察到的实验现象。

思考题7、通过上述实验,你能得出什么结论?思考题8、在上述实验中,自变量是什么?无关变量是什么?思考题9、探究温度对酶活性的影响实验中是否可以用斐林试剂来检验实验结果?为什么?探究影响酶活性的因素四、与酶有关的曲线解读(一)表示酶高效性的曲线:1、催化剂可 化学反应速率,与无机催化剂相比,酶的催化效率更 。

2、酶只能 达到化学平衡所需时间,不改变化学反应的 。

3、酶只能催化 的化学反应。

(二)表示酶专一性的曲线:1、在A 反应物中加入酶A ,反应速率较未加酶时明显 ,说明酶A 催化底物A 参加反应。

2、在A 反应物中加入酶B ,反应速率和未加酶时 ,说明酶B 不催化底物A 参加反应。

[北科大]无机化学实验:7 水的总硬度及电导率的测定(实验报告)

[北科大]无机化学实验:7 水的总硬度及电导率的测定(实验报告)

无机化学实验报告【实验名称】实验七:水的总硬度及电导率的测定 【班级】 【日期】 【姓名】 【学号】一、实验目的① 了解硬水,软水及去离子水的概念。

② 学会化学法(配位滴定法)和电导率法两种检验水质的方法。

③ 学习电导率仪和微量滴定管的操作和使用。

二、 实验原理1、配位滴定法测定水的总硬度(1)实验原理 Ca 2+、Mg 2+是生活用水中主要的杂质离子,他们以碳酸氢盐、氯化物、硫酸盐、硝酸盐等形式溶于水中,水中还有微量的Fe 3+、Al 3+等,由于Ca 2+、Mg 2+远比其他几种离子含量高,所以通常用Ca 2+、Mg 2+的总量来计算水的总硬度。

水质的分类法,即在pH=10的碱性缓冲溶液中,用酸性铬兰K-萘酚绿B 混合指示剂(简称K-B 指示剂),以EDTA (Na 2H 2Y )标准溶液直接滴定水中的Ca 2+、Mg 2+。

滴定反应表示如下。

○1滴定前: Ca 2+、Mg 2+与酸性铬蓝K 形成红色螯合物,在萘酚绿B 的衬托下,溶液呈紫红色K-B + M (Ca 2+、Mg 2+) 10=======pH M -K-B(蓝绿) (紫红)○2滴定开始至化学计量点以前: EDTA 与游离的Ca 2+、Mg 2+配位H 2Y 2- + Ca 2+ ==== CaY 2- +2H + H 2Y 2- + Mg 2+ ==== MgY 2- +2H +○3化学计量点时: EDTA 与酸性铬兰K 的Ca 2+、Mg 2+螯合物反应,溶液由紫红色变为蓝绿色H 2Y 2- + M-K-B ==== MgY 2- + K-B + 2H +(紫红色) (蓝绿)水样中存在微量的杂质离子Fe 3+、Al 3+,可用三乙醇胺进行掩蔽。

(2)水总硬度的计算方法 用mmol/L 表示水的总硬度为:总硬度(毫摩尔每升)==3水样10⨯V V C EE (3—4) 式中 C E ——EDTA 的浓度;E V ——消耗EDTA 的体积的平均数; V 水样——采用水样的体积。

化学实验七个环节

化学实验七个环节

化学实验七个环节
化学实验通常在以下七个环节中进行:
1. 确定实验目的和条件:在开始实验之前,确定实验的目的、实验条件和所需的材料和设备。

2. 准备实验:根据实验的需求,准备所需的材料和设备,包括化学试剂、玻璃仪器和实验装置等。

3. 混合和反应:将所需的试剂按照一定的比例混合,并将其放入适当的容器中进行反应。

此过程可能涉及加热、搅拌、调节pH等操作。

4. 产物处理:在反应完成后,根据实验的需求处理生成的产物。

这可能包括过滤、结晶、洗涤、干燥等步骤。

5. 测量和分析:对实验过程中所产生的数据进行测量和分析。

这可能涉及使用仪器进行质量和体积的测量、光谱分析、色谱分离等。

6. 记录和数据处理:将实验过程中的关键数据和观察结果记录下来。

这包括实验条件、实验数据、实验结果等。

此外,还需要对实验数据进行处理和分析,例如计算反应产率、绘制曲线等。

7. 结论和讨论:根据实验结果,得出结论并进行讨论。

这可能涉及对实验的可靠性和准确性的评估,以及与理论预期的比较
和错误分析等。

这些环节的具体顺序和步骤可能因实验的性质和需求而有所不同。

实验过程中需要严格遵守安全操作规程,以确保实验过程的安全性。

九年级化学实验活动7溶液酸碱性的检验实验报告单

九年级化学实验活动7溶液酸碱性的检验实验报告单

实验报告实验名称:溶液酸碱性的检验一、实验目的1.掌握酸碱指示剂的使用和分类方法;2.了解酸碱溶液的鉴别方法;3.学习溶液酸碱性检验的操作技巧。

二、实验原理酸和碱是化学中两种常见的物质,它们的性质不同。

通过酸碱指示剂,能够很好地判断溶液是酸性、中性还是碱性。

常见的酸碱指示剂有苏丹红、酚酊、酚酞、甲基橙和甲基红等。

不同的酸碱指示剂对酸、碱的变色范围不同,所以我们要根据指示剂的性质选择适当的指示剂。

三、实验器材和试剂器材:试管、滴管、显微镜。

试剂:酸碱试剂、酸碱指示剂。

四、实验步骤1.在试管中分别加入待测溶液10滴;2.滴加少许酸碱指示剂;3.观察试管内的颜色变化;4.使用显微镜观察溶液中的小细胞。

五、实验数据记录和处理1.观察到的颜色变化:-对于苏丹红:酸性溶液变红,中性溶液橙黄,碱性溶液黄色。

-对于酚酊:酸性溶液变红,中性溶液橙黄,碱性溶液无变化。

-对于酚酞:酸性溶液颜色无变化,中性溶液橙红,碱性溶液变黄。

-对于甲基橙:酸性溶液变红,中性溶液橙黄,碱性溶液变黄。

-对于甲基红:酸性溶液变红,中性溶液橙黄,碱性溶液变黄。

2.显微镜观察结果:-酸性溶液下显微镜观察到的小细胞属于酸性小细胞;-碱性溶液下显微镜观察到的小细胞属于碱性小细胞;-中性溶液下显微镜观察到的小细胞属于中性小细胞。

六、实验结果和结论通过实验可以得到以下结论:1.根据不同酸碱指示剂的变色范围可以判断溶液的酸碱性;2.酸性溶液对应的是酸性小细胞,碱性溶液对应的是碱性小细胞,中性溶液对应的是中性小细胞;3.运用酸碱指示剂和显微镜观察小细胞的方法可以鉴别溶液的酸碱性。

七、实验心得通过这个实验,我学习到了酸碱指示剂的使用方法,并且掌握了一些常用的酸碱指示剂的变色范围。

我还知道了如何使用显微镜观察溶液中的小细胞来鉴别酸碱性。

这个实验不仅培养了我的观察力,还提高了我的实验操作技巧。

我相信这些知识和技能在以后的学习中会有很大的帮助。

实验活动7: 溶液酸碱性的检验(含答案)

中学学生化学实验报告单实验题目:实验活动7:溶液酸碱性的检验班级:日期:指导教师:第组姓名:同组人:【实验目的】1、初步学会用酸碱指示剂检验溶液的酸碱性。

2、初步学会用pH试纸测定溶液的酸碱度。

【实验用品】烧杯、试管、研钵、玻璃棒、纱布。

蒸馏水、酒精、酚酞溶液、石蕊溶液、pH试纸、植物的花瓣或果实、土壤样品。

你还需要的实验室用品:稀HCl、石灰水、食盐水你还需要的生活用品:紫甘蓝、食醋、肥皂水、【实验步骤】1、自制酸碱指示剂:自己选择植物的花瓣或果实,在研钵中捣烂(榨取花的汁液),加入酒精浸泡;用纱布将浸泡出的汁液过滤(目的:得到花的浸取液)或挤出。

2、选择实验室或生活中的几种溶液,进行下列实验:(1)分别用酚酞溶液和石蕊溶液检验溶液的酸碱性。

(2)用pH试纸测定溶液的酸碱度(把pH试纸放在玻璃片上,用玻璃棒蘸取待测溶液,滴在试纸上,把pH试纸显示的颜色与标准比色卡比较,读出该溶液的pH)。

(3)试验自制的指示剂在溶液中颜色的变化。

【实验结论】(1)食醋、稀盐酸的溶液呈酸性,p H﹤7,能使紫色石蕊溶液变红色,不能使酚酞溶液变色。

(2)食盐水呈中性,p H﹦7,不能使石蕊和酚酞溶液变色。

(3)肥皂水、石灰水的溶液呈碱性,p H﹥7,能使石蕊溶液变蓝色,使酚酞溶液变红色。

(4)牵牛花、紫甘蓝、月季花的汁液可用作酸碱指示剂,万寿菊的汁液不能用作酸碱指示剂。

3、在校园或农田里取少量土壤样品。

将土壤样品与蒸馏水按1﹕5的质量比在烧杯中混合,充分搅拌后静置。

用pH试纸测澄清液体的酸碱度(测定结果:澄清液体的pH为8 )。

【实验结论】校园土壤的pH为8,呈弱碱性。

【问题与交流】1、你自制的指示剂检验溶液酸碱性的效果如何?了解其他同学自制的指示剂的检验效果,哪种植物的花瓣或果实制成的指示剂检验效果好?自制的指示剂检验溶液酸碱性的效果明显。

月季花、牵牛花、紫甘蓝的汁液在酸或碱溶液的颜色变化比较明显,可以用来做酸碱指示剂。

实验七填料塔吸收实验

实验七填料吸收塔的操作和吸收系数的测定一、实验目的1.了解填料吸收塔的结构、填料特性及吸收装置的基本流程。

2.熟悉填料塔的流体力学性能。

3.掌握总传质系数K Y a测定方法。

4.了解空塔气速和液体喷淋密度对传质系数的影响。

二、实验内容1.测定干填料及不同液体喷淋密度下填料的阻力降∆P与空塔气速u的关系曲线,并确定液泛气速。

2.测量固定液体喷淋量下,不同气体流量时,用水吸收空气—氨混和气体中氨的体积吸收系数K Y a。

三、基本原理1.填料塔流体力学特性填料塔是一种重要的气液传质设备,其主体为圆柱形的塔体,底部有一块带孔的支撑板来支承填料,并允许气液顺利通过。

支撑板上的填料有整堆和乱堆两种方式,填料分为实体填料和网体填料两大类,如拉西环、鲍尔环、θ网环都属于实体填料。

填料层上方有液体分布装置,可以使液体均匀喷洒在填料上。

液体在填料中有倾向于塔壁的流动,故当填料层较高时,常将其分段,段与段之间设置液体再分布器,以利液体的重新分布。

吸收塔中填料的作用主要是增加气液两相的接触面积,而气体在通过填料层时,由于克服摩擦阻力和局部阻力而导致了压强降∆P的产生。

填料塔的流体力学特性是吸收设备的主要参数,它包括压强降和液泛规律。

了解填料塔的流体力学特性是为了计算填料塔所需动力消耗,确定填料塔适宜操作范围以及选择适宜的气液负荷。

填料塔的流体力学特性的测定主要是确定适宜操作气速。

在填料塔中,当气体自下而上通过干填料(L=0)时,与气体通过其它固体颗粒床层一样,气压降∆P与空塔气速u的关系可用式∆P=u1.8-2.0表示。

在双对数坐标系中为一条直线,斜率为 1.8-2.0。

在有液体喷淋(L≠0)时,气体通过床层的压降除与气速和填料有关外,还取决于喷淋密度等因素。

在一定的喷淋密度下,当气速小时,阻力与空塔速度仍然遵守∆P∝u1.8-2.0这一关系。

但在同样的空塔速度下,由于填料表面有液膜存在,填料中的空隙减小,填料空隙中的实际速度增大,因此床层阻力降比无喷淋时的值高。

实验七.gal实验


三、实验原理
1.通用阵列逻辑GAL22V10
通用阵列逻辑GAL是由可编程的与阵列、固定的或阵列和输出 逻辑宏单元三部分构成。 GAL芯片必须借助GAL的开发软件和硬件,对其编程写入后,才 能使GAL芯片具有预期的逻辑功能。 GAL22V10: 有10个I/O口、 12个输入口、 10个寄存器单元, 最高频率为超过100MHz。
见引脚图 1.12.编译来自下载源文件用VHDL语言编写的源程序,是不能直接对芯片编程 下载的,必须经过计算机软件对其进行编译,综合等最 终形成PLD器件的熔断丝文件(简称为JED文件)。 通过相应的软件及编程电缆再将JED数据文件写入 到GAL芯片,这样GAL芯片就 建立工程 具有用户所需要的逻辑功能。
五.实验报告要求:
1. 画出ispGAL22V10C器件实现基本逻辑门及触发 器的引脚图。 2. 简述用PLA模型设计的N位二进制计数器的原理。 3. 写出VHDL语言编写的源程序。 4. 画出各实验的仿真波形。 5. 思考题。
输入源程序
3. GAL实验流程图
编译源程序
建立测试波形、仿真 下载验证
四、实验内容与操作步骤
1. 用GAL22V10实现基本逻辑门及触发器。
四、实验内容与操作步骤
2.启动ispLEVER 3.创建一个新的设计项目 4.VHDL设计输入. 5.仿真波形输入 6.编译源文件 7.仿真 8.在线下载 9.在实验仪上进行功能测试
实验七:通用阵列逻辑GAL实验
一.实验目的:
1.了解ispGAL22V10C的结构及其应用。 2.学会使用VHDL语言进行GAL器件的逻辑设计。 3.掌握GAL器件的编程、仿真、下载、验证等全 部过程。
二.实验内容:
1.用ispGAL22V10C器件实现基本门电路。 2.用ispGAL22V10C器件实现各种触发器。 3.用ispGAL22V10C器件实现10进制计数器。

实验七 带传动实验 (2)

7 实验七 带传动的弹性滑动与效率实验靠摩擦力传递动力或运动的摩擦型带传动(如平带、V 带等),由于中间元件传动带所具有的挠性,使带传动在工作中产生紧边拉力F 1与松边拉力F 2,由紧边拉力计算式102F F F =+和松边拉力计算式202FF F =-(式中,F 0为带的预紧力;F 为工作载荷要求的有效圆周力),可以看出,由于紧边和松边的拉力不同,造成带的紧边和松边的拉伸变形不同,因而不可避免地会产生带的弹性滑动。

由于弹性滑动的影响,从动轮的圆周速度v 2低于主动轮的圆周速度v 1,其降低量可用滑动率ε来表示:121212111100%100%d n d n v v v d n ππεπ--=⨯=⨯ (7-1) 若主动带轮直径与从动带轮直径相等,即12d d =,则121100%n n n ε-=⨯ 滑动率ε的值与发生弹性滑动的强弱有关,也就是与工作载荷要求的有效圆周力有关。

在做该项实验过程中可以观察到,随着工作载荷的增加,从动轮的圆周速度v 2与主动轮的圆周速度v 1的差值越来越大,即ε值越来越大。

当工作载荷要求的有效圆周力F 超过带与带轮间的摩擦力极限值时,带开始在轮面上打滑,滑动率ε值急剧上升,带传动失效。

这就是带传动实验中的滑动率实验。

带传动实验的第二项内容是求带传动的工作效率。

机械传动的工作效率η是输出功率P 2与输入功率P 1的比值,即21P P η=。

带传动工作时,由于弹性滑动的影响,造成带的摩擦发热和带的磨损,也使传动效率降低。

从机械设计手册中查到的带传动的工作效率值,是在预紧力F 0、工作载荷F 、带的圆周速度v 都达到设计的预定值时的最高效率,如果预紧力F 0、工作载荷F 、带的圆周速度v 没有达到设计的预定值时,则效率η值低于最高效率值。

带传动效率实验是在预定带的圆周速度v 值、预紧力F 0值条件下,工作载荷F 由小到大过程中,效率的变化状况。

如果预紧力F 0超过设计的预定值,虽然效率η值有所提高,但将使带的磨损加剧,温升增高,寿命下降。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Southwest university of science and technology 基于窗口的网络聊天软件设计专业班级信安1402班实验名称基于窗口的网络聊天软件设计实验类型设计型学生姓名蒋字翔学号5120142362指导教师贾浩2017年5月7日目录一、引言 --------------------------------------------------------------------------------------------------------- - 3 -1.1选题背景 ---------------------------------------------------------------------------------------------- - 3 -1.2选题目的 ---------------------------------------------------------------------------------------------- - 3 -二、相关基础技术与开发平台 ----------------------------------------------------------------------------- - 4 -2.1 C/S模型设计----------------------------------------------------------------------------------------- - 4 -2.2 WSAAsyncSelect 模型 -------------------------------------------------------------------------- - 4 -2.3 开发平台---------------------------------------------------------------------------------------------- - 4 -三、系统需求分析与总体设计 ----------------------------------------------------------------------------- - 4 -3.1 需求分析---------------------------------------------------------------------------------------------- - 4 -3.1.1 用户需求------------------------------------------------------------------------------------- - 5 -3.1.2 功能需求------------------------------------------------------------------------------------- - 5 -3.1.3 性能需求------------------------------------------------------------------------------------- - 5 -3.2 设计思路---------------------------------------------------------------------------------------------- - 5 -四、系统模块的实现------------------------------------------------------------------------------------------ - 5 -五、系统测试及问题处理 ----------------------------------------------------------------------------------- - 5 -5.1测试环境 ---------------------------------------------------------------------------------------------- - 5 -5.2 测试结果---------------------------------------------------------------------------------------------- - 6 -5.3 测试总结---------------------------------------------------------------------------------------------- - 6 -六、结论 --------------------------------------------------------------------------------------------------------- - 7 -参考文献 --------------------------------------------------------------------------------------------------------- - 7 -摘要TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1]另一个重要的传输协议。

WSAEventSelect模型是WindowsSockets提供的一个有用异步I/O模型。

该模型允许在一个或者多个套接字上接收以事件为基础的网络事件通知。

Windows Sockets应用程序在创建套接字后,调用WSAEventSelect()函数,将一个事件对象与网络事件集合关联在一起。

当网络事件发生时,应用程序以事件的形式接收网络事件通知。

关键词:TCP,C/C++,C/S模型一、引言1.1选题背景近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。

使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。

各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。

过去的种种陈旧的联系方式,已经不能满足现代生活的需要。

网上聊天软件作为一种方便消费者与人们之间联系的实用系统便应运而生。

网上聊天软件是为人们进行交流和联系提供的一个平台。

通过提供完善的网上聊天软件的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的。

1.2选题目的网络聊天软件作为现代社会必备的常用工具,它缩短了人与人之间的距离,为身处异地的人提供一个便宜、便捷的交流方式。

同时也为可更好的理解网络程序设计这门课程,更好的理解数据时如何在网络上传递的。

二、相关基础技术与开发平台2.1 C/S模型设计客户机/服务器在分布处理过程中,使用基于连接的网络通信模式。

该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。

客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。

这就是典型的“请求--应答”模式。

下面是客户机/服务器的一个典型运作过程:(1)服务器监听相应端口的输入;(2)客户机发出一个请求;(3)服务器接收到此请求;(4)服务器处理这个请求,并把结果返回给客户机;(5)上述过程,直至完成一次会话过程。

本设计由于使用的是TCP数据传输,服务器使用监听模式接受数据,当套接字收到数据时直接显示在对话框中并返回给客户端。

2.2 WSAEventSelect 模型WSAEventSelect 模型使用事件通知应用程序,它为Socket注册网络事件,并将指定的时间对象关联到指定的网络事件集合。

将每个套接字都和一个WSAEVENT对象对应起来,并且在关联的时候指定需要关注的哪些网络事件。

2.3 开发平台1.VC++6.02.Windows10三、系统需求分析与总体设计3.1 需求分析客户端之间实现网络通信,服务器群发消息通知3.1.1 用户需求运行软件输入对方机子的IP地址和端口即可进行在线聊天,可群聊天和广播,私聊。

3.1.2 功能需求聊天数据能够在线接受和发送,并打印在软件框内,并实时显示在线用户详情。

3.1.3 性能需求该程序能够在本地远程的机器之间进行交互使用。

3.2 设计思路本设计采用C/S模型,首先初始化动态链接库,然后初始化套接字选择异步选择模式,然后分别编写收发数据的代码,套接字收到过来的数据时为数据分配空间并进行切片然后分别存储并显示在相应对话框中,并判断是否读取源地址成功,若失败则返回失败信息;在发送消息时首先截取自己IP然后绑定空间,最后截取消息数据然后发送。

四、系统模块的实现服务器:(1)开启服务(2)广播;(3)实时更新在线用户信息(4)清除消息列表客户端:(1)连接服务器(2)清空消息列表(3)发送消息(单发、群发)五、系统测试及问题处理5.1测试环境程序测试环境:Windows 10 和vc++6.05.2 测试结果在win10环境下:连接服务群发单发广播清空消息功能:5.3 测试总结通过测试,基本实现了设计的全部功能,其程序无错误,在测试环境下运行正常,无报错。

但是,当客户端二次连接服务器会出现问题,会出现多个重复的历史消息,除此以外,当先关闭服务器时,会导致所有打开的客户端卡死。

六、结论通过此次实验,我们三个人共同参考文献,共同商讨设计方案,终于实现了WSAEventSelect 模型仿QQ聊天基本功能,在编写过程中,虽然存在一些bug,但是通过努力查找测试修改,大部分bug都解决,不影响其基本功能的实现和使用,经此实验,对于理论知识有了更深的理解,提高的实践能力和思维能力。

参考文献[1] Windows网络与通信程序设计(第2版),人民邮电出版社,2015.1附录(主要代码):服务端://等待客户端发消息并进行转发unsigned __stdcall WorkerThread(void* param){int ret, index;WSANETWORKEVENTS NetworkEvents;//事件对象char szMessage[MSGSIZE];while (TRUE){//关键APIret = WSAWaitForMultipleEvents(g_iTotalConn, g_CliEventArr, FALSE, 1000, FALSE);if (ret == WSA_W AIT_FAILED || ret == WSA_WAIT_TIMEOUT){continue;//如果返回值是错误或是超时,那么继续}index = ret - WSA_WAIT_EVENT_0;//取出发生事件的对应项WSAEnumNetworkEvents(g_CliSocketArr[index], g_CliEventArr[index], &NetworkEvents);if (NetworkEvents.lNetworkEvents & FD_READ)//取得FD_READ的方法{// Receive message from clientret = recv(g_CliSocketArr[index], szMessage, MSGSIZE, 0);//接收if (ret == 0 || (ret == SOCKET_ERROR && WSAGetLastError() == WSAECONNRESET)){Cleanup(index);//掉线\退出的错误则处理}else{szMessage[ret] = '\0';CString str[3];char* p=strtok(szMessage,"@~@");for(int i=0;i<3;i++){p=strtok(NULL,"@~@");//继续调用strtok,分解剩下的字符串}u_long Ip = inet_addr(str[0]);int Port = _ttoi(str[1]);int temp = -1;if(Port==0 && Ip==inet_addr("0.0.0.0")){temp = -2;for (int j=0;j<g_iTotalConn;j++){CString msg="[群聊]";CString ip_s = inet_ntoa(g_CliSocketArr_2[index].sin_addr);char str1[20];sprintf(str1,"%d",ntohs(g_CliSocketArr_2[index].sin_port));msg+=ip_s;msg+=" ";msg+=str1;msg+=": ";msg+=str[2];send(g_CliSocketArr[j], msg, strlen(msg), 0);}}else{for (int j=0;j<g_iTotalConn;j++){if(ntohs(g_CliSocketArr_2[j].sin_port)==Port && inet_addr(inet_ntoa(g_CliSocketArr_2[j].sin_addr))==Ip){temp = j;}}}if(temp!=-1){//inet_ntoa(client.sin_addr), ntohs(client.sin_port)CString msg="";CString ip_s = inet_ntoa(g_CliSocketArr_2[index].sin_addr);char str1[20];sprintf(str1,"%d",ntohs(g_CliSocketArr_2[index].sin_port));msg+=ip_s;msg+=" ";msg+=": ";msg+=str[2];send(g_CliSocketArr[temp], msg, strlen(msg), 0);}else if(temp == -1){send(g_CliSocketArr[index], "服务器:找不到该用户!", strlen("服务器:找不到该用户!"), 0);}}}if (NetworkEvents.lNetworkEvents & FD_CLOSE)//客户端关闭{Cleanup(index);}}return 0;}//实时检测在线用户并在用户变更时更新在线列表和发送在线列表给所用客户端unsigned __stdcall ThreadCheck(void* param){while(true){CString s_0="",s_1;if(flag){char s_2[20];for(int i=0;i<g_iTotalConn;i++){s_1.Format("%s",inet_ntoa(g_CliSocketArr_2[i].sin_addr));s_0+=s_1;s_0+=" ";sprintf(s_2,"%d",ntohs(g_CliSocketArr_2[i].sin_port));s_1.Format("%s",s_2);s_0+=s_1;s_0+="\r\n";}stru_message_param *param = new stru_message_param;strcpy(param->msg,s_0);param->flag=2;PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_MY_MESSAGE,0,(LPARAM)param);for(int k=0;k<g_iTotalConn;k++){send(g_CliSocketArr[k], s_0, strlen(s_0), 0);}flag=false;}Sleep(500);}return 0;}客户端://接受信息unsigned __stdcall ThreadRecv(void* param){char buf[1024] = { 0 };while (1){int ret = recv(sClient, buf, sizeof(buf), 0);buf[ret]='\0';if (ret == SOCKET_ERROR){continue;}if (strlen(buf) != 0){stru_message_param *param = new stru_message_param;strcpy(param->msg,buf);if(strstr(buf,":")!=NULL)param->flag=1;else param->flag = 2;PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_MY_MESSAGE,0,(LPARAM)para m);}}return 0;}//私聊传递信息(包含发送对象端口和IP)void CClientDlg::OnBUTTONsend(){// TODO: Add your control notification handler code hereCString str,ip,port,msg,text;m_ip.GetWindowText(ip);GetDlgItemText(IDC_EDIT_PORT, port);GetDlgItem(IDC_EDIT_msg)->GetWindowText(str);msg+=ip;msg+="@~@";msg+=port;msg+="@~@";msg+=str;send(sClient, msg, strlen(msg), 0);if(!(_ttoi(port)==0 && inet_addr(ip)==inet_addr("0.0.0.0"))) {GetDlgItem(IDC_EDIT_recv)->GetWindowText(text);text+="我: ";text+=str;text+="\r\n";GetDlgItem(IDC_EDIT_recv)->SetWindowText(text);}GetDlgItem(IDC_EDIT_msg)->SetWindowText("");}。

相关文档
最新文档