版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华为企业文化99253一套地下连续墙的图片一套地下连续墙的图片
/一套地下连续墙的图片导墙放线:导墙开挖:
??????????????????????????????????????钢筋绑扎
??????????????????????????????????????模板支设
??????????????????????????????????????
浇筑混凝土导墙浇筑完毕要注意养护,中间要架设木支撑或者砖支撑再来一个支撑
泥浆配置泥浆测试成槽开挖成槽开挖2成槽开挖3钢筋笼平台及钢筋对焊钢筋笼子制作钢筋龙起吊,这是一个难题钢筋龙起吊钢筋龙入槽锁口管吊放,两边的是锁口管混凝土浇筑,中间的为浇筑设备,两边是锁口管混凝土浇筑2混凝土浇筑3
根据槽段的大小本工程要求两个浇筑孔同时浇筑。锁口管起拔1锁口管起拔2这种锁口管效果非常好,因为它不是纯圆形的,在与槽壁接触的地方有两个突出的翼缘,,刚好与槽壁接触,相对严密的多。当然,一点不绕浇也是不可能的。目前还没发现你说的那种情况。不妨试试。开挖深度为26米。我们所用的泥浆为超泥浆,目前国内最为先进的泥浆。国内多采用膨润土(亦即皂土,Bentontie)泥浆,随着科技材料的发展,国外与香港、台湾都已逐渐转换为高分子聚合物材料——聚丙烯醯胺(Polyacrylamide)超泥浆稳定液。这种液体是一种高浓缩性白色乳液,与水拌合后即产生膨胀作用,以提高水的粘滞度,在钻掘壁面形成一层富有韧性的胶质薄膜,防止钻掘平面之崩塌,达到稳定孔洞与沟槽之目的。这种超泥浆易于拌合,无粉尘污染,不需泥浆搅拌池、沉淀池,能促使悬浮泥沙产生凝絮,加速沉淀,并可多次循环使用。它突出的优点是无毒性、无污染,不影响环境生态。完工时的废液处理,仅需按水量1/750~1/500比例添加硫酸铝(明矾),充分搅拌后,水中酸碱值中和至6.0.~8.0之间,超泥浆之高分子链即断解、卷曲失效,稍置后即可排于下水道。最近的连续墙内部支撑刚刚做完,大家看看!
楼主的图片真的很精彩,让我们这些从未施工过的建筑人感到很长见识。但是我发现还是有很多人对地下连续墙不是很了解,发个图片,很形象。下面是地下连续墙的起源、作用、及优缺点,希望对新学者有所帮助。
地下连续墙(diaphragm?wall?panel?trench,slurry?trench,slurry?wall,continuous?diaphragm?wall,cut-off?wall等)开挖技术起源于欧洲[1]。它是根据打井和石油钻井使用泥浆和水下浇注混凝土的方法而发展起来的,1950年在意大利米兰首先采用了护壁泥浆地下连续墙施工[2],20世纪50~60年代该项技术在西方发达国家及前苏联得到推广,成为地下工程和深基础施工中有效的技术。由于目前挖槽机械发展很快,与之相适应的挖槽工法层出不穷;有不少新的工法已经不再使用膨润土泥浆;墙体材料已经由过去以混凝土为主而向多样化发展;不再单纯用于防渗或挡土支护,越来越多地作为建筑物的基础,所以很难给地下连续墙一个确切的定义[1]。一般地下连续墙可以定义为[1]:利用各种挖槽机械,借助于泥浆的护壁作用,在地下挖出窄而深的沟槽,并在其内浇注适当的材料而形成一道具有防渗(水)、挡土和承重功能的连续的地下墙体。?经过几十年的发展,地下连续墙技术已经相当成熟,其中以日本在此技术上最为发达,已经累计建成了1500万m2以上,目前地下连续墙的最大开挖深度为140?m,最薄的地下连续墙厚度为20cm。1958年,我国水电部门首先在青岛丹子口水库用此技术修建了水坝防渗墙,到目前为止,全国绝大多数省份都先后应用了此项技术,估计已建成地下连续墙120万~140万m2。地下连续墙已经并且正在代替很多传统的施工方法,而被用于基础工程的很多方面。在它的初期阶段,基本上都是用作防渗墙或临时挡土墙。通过开发使用许多新技术、新设备和新材料,现在已经越来越多地用作结构物的一部分或用作主体结构,最近十年更被用于大型的深基坑工程中。?通常地下连续墙主要被用于[1]:?1.水利水电、露天矿山和尾矿坝(池)和环保工程的防渗墙?2.建筑物地下室(基坑)?3.地下构筑物(如地下铁道、地下道路、地下停车场和地下街道、商店以及地下变电站等)。?4.市政管沟和涵洞?5.盾构等工程的竖井?6.泵站、水池?7.码头、护案和干船坞?8.地下油库和仓库?9.各种深基础和桩基?地下连续墙之所以能得到如此广泛的应用和其具有的优点是分不开的,地下连续墙具有以下一些优点[1,3]:?1.施工时振动小,噪音低,非常适于在城市施工。?2.墙体刚度大,用于基坑开挖时,可承受很大的土压力,极少发生地基沉降或塌方事故,已经成为深基坑支护工程中必不可少的挡土结构。?3.防渗性能好,由于墙体接头形式和施工方法的改进,使地下连续墙几乎不透水。?4.可以贴近施工。由于具有上述几项优点,使我们可以紧贴原有建筑物建造地下连续墙?5.可用于逆做法施工。地下连续墙刚度大,易于设置埋设件,很适合于逆做法施工。?6.适用于多种地基条件。地下连续墙对地基的适用范围很广,从软弱的冲积地层到中硬的地层、密实的砂砾层,各种软岩和硬岩等所有的地基都可以建造地下连续墙。?7.可用作刚性基础。目前地下连续墙不再单纯作为防渗防水、深基坑维护墙,而且越来越多地用地下连续墙代替桩基础、沉井或沉箱基础,承受更大荷载。?8.用地下连续墙作为土坝、尾矿坝和水闸等水工建筑物的垂直防渗结构,是非常安全和经济的。?9.占地少,可以充分利用建筑红线以内有限的地面和空间,充分发挥投资效益。?10.工效高、工期短、质量可靠、经济效益高。?但地下连续墙也存在一些不足[1]:?1.在一些特殊的地质条件下(如很软的淤泥质土,含漂石的冲积层和超硬岩石等),施工难度很大。?2.如果施工方法不当或施工地质条件特殊,可能出现相邻墙段不能对齐和漏水的问题?3.地下连续墙如果用作临时的挡土结构,比其它方法所用的费用要高些。?4.在城市施工时,废泥浆的处理比较麻烦。接头防水措施论文1许府巷车站地下连续墙及地质概况
南京地铁一号线许府巷车站全长234.9m,标准段结构净宽18.6m,站台宽度11m,为二级车站,站体形式为地下两层双排柱列三跨钢筋混凝土箱形框架结构,采用明挖顺作法施工。主体围护结构采用0.6m厚地下连续墙,并作为结构的一部分与内衬墙(0.4~0.6m厚)一起构成站体的叠合侧墙。许府巷站连续墙共92幅槽段,总长530.5m,标准分幅宽度6m,标准段埋深为25.5m、26m,南北端头井埋深为28.5m、27.5m,槽段接头为凹凸型预制钢筋混凝土楔形接头桩,分间隔槽段先后进行施工,穿越地层的平均厚度依次为:杂填土0.7m,素填土0.6m,粉土1.7m,粉细砂8m,粉质粘土14.5m。主体结构基坑开挖深度约15.5m,端头井开挖深度17.4m,宽度19.2~19.8m,底板坐落在粉质粘土上。
南京地区气候四季分明,夏季天气湿热,雨天较多,每年5~8月份有2地下连续墙接头的设计与分析
地下连续墙单元槽段依靠接头连接,这种接头通常要满足受力和防渗要求,还要施工简单。按使用接头工具的不同可分为接头管(锁口管)、接头箱、隔板、工字钢、十字钢板以及改进接头-凹凸型预制钢筋混凝土楔形接头桩等几种常用型式。
2.1接头管连接
这是国内外迄今使用最多的一种非刚性接头形式。其优点是用钢量少、造价低,但一次性投入较多,对起吊设备及时间控制要求较高,且存在整体刚度和渗漏问题。三山街站使用的就是这种接头形式。施工工艺如图1。
2.2接头箱连接
这种方法是在接头管旁再附一个敞口接头箱,可使两相邻槽段的水平钢筋搭接,变成刚性接头,其施工工艺过程如图2。
2.3隔板
隔板是用钢板作为单元槽段浇筑混凝土的堵头,如图3所示,这种接头既可以使钢筋在接头保持连续,也可以不连续(非刚性接头),可根据设计要求和施工条件而定。
2.4工字钢接头
工字钢既是承受垂直方向的力矩与水平剪力的主要构件,也是两槽段之间的结合构件,可当作由工字钢支承的简支梁来设计。这种接头在非常靠近大型建筑物而槽段长度较短的情况下是有效的,如图4(a)所示。
图4(b)所示为一种"异形"工字钢接头形式。
2.5十字钢板接头
十字钢板可连接左右墙体而成为刚性接头,如图5所示。
2.6凹凸型预制钢筋混凝土楔形桩接头
凹凸型楔形接头的优点是:
①渗流途径长,折点多、抗渗性能好;
②凹凸型楔形接头使平面外抗剪能力得到较大的提高;
③施工难度小,操作方便,易保证质量。
许府巷站使用的就是这种接头形式(玄武门站和张府园站也使用的此接头形式),施工方式如图6。为保证接头清洗效果,设计制作了楔形接头刷,如图7所示。刷接头时间不少于30min一次,上下往复洗刷不少于20次。
对以上六种常用连续墙接头的各种性能分析比较如下:
1)传递力:刚性接头好,非刚性接头不能传递弯矩,仅能传递轴力和剪力;
2)接头造价(用钢量):接头管(箱)低(但一次性投入大),工字钢、隔板、十字钢板和预制接头桩高;
3)施工工艺:凹凸型预制接头桩最易,异形工字钢和接头管(箱)较易,隔板和十字钢板接头最复杂;
4)安装接头工艺:凹凸型预制接头桩、隔板和异形工字钢接头最易,接头箱和十字钢板最复杂;
5)接头制作工艺:凹凸型预制接头桩和接头管最易,隔板最复杂;
6)止水效果:如果认真施工,均可满足防渗要求,接头管和工字钢接头的自防水效果比其它几种接头稍差。通过许府巷站围护结构施工完成、开挖土方后的止水效果情况来看,设计上采用预制钢筋混凝土凹凸型楔形接头桩是有效的、成功的。
分析各种接头形式的优缺点,从施工工艺简单、难度小、易保证质量、施工投入小方面考虑,应优先选用预制钢筋混凝土凹凸型楔形接头。结合地质条件,如果连续墙建在淤泥等流塑软土层中,则应先用刚性接头(隔板、接头箱、十字钢板);如果是含水砂层和粘土层,地下水位又高,则应优选预制钢筋混凝土凹凸型楔形接头和异形工字钢接头;对于自稳能力较好的风化岩等地质,则用接头管即可。
3许府巷站地下连续墙接头施工中的防水措施
3.1连续墙接头施工中的防水措施
由于地下连续墙是泥浆护壁成槽,接头混凝土面上必然附着有一定厚度的泥皮(与泥浆指标、制浆材料有关),如不清除,浇筑混凝土时在槽段接头面上就会形成一层夹泥带,基坑开挖后,在水压作用下可能从这些地方渗漏水及冒砂。为了减少这种隐患,保证连续墙的质量,施工中必须采取有效的方法进行清刷混凝土壁面。
首先,在雌槽段浇筑混凝土之前,为防止混凝土从接头桩缝隙流入背后难以清刷的问题,必须采取措施,设计上曾采用在接头桩的背面贴上泡沫板的方式,实践证明此方式不可行,因为当贴有泡沫板的接头桩安装在槽段内时,泡沫板由于较大的浮力迅速与接头桩分离浮起。为此,施工中采用了在雌槽段两侧接头桩背面坑槽内放入粒径3~5cm的石料至连续墙顶面,然后开始浇筑混凝土,浇筑完毕达一定强度后,用成槽机把石料取出,继续挖出雄槽段,这时用制作好的楔形接头刷洗刷接头桩的背面,时间不少于30min1次,上下往复洗刷不少于20次。刷完壁后(每刷一次)及时将刷壁器上的泥皮清洗干净,并检查钢丝状况,及时修补。
3.2基坑开挖中连续墙接头的渗漏水处理
许府巷站基坑开挖中采取了特殊的井点降水措施,通过抽水机将水排入地面上的城市地下排污管道(经过沉淀池沉淀)。对连续墙接头缝的渗水采取了以下几种措施,止水效果比较好。
????????????????????????????????????????????????????????淮安市博隆防水材料有限公司专业生产高压灌浆机、高压注浆机,水溶性聚氨酯灌浆材料、油溶性聚氨酯堵漏剂,止水针头等防水堵漏产品,具有优越的性能与很强的实用性,欢迎来电咨询,共享利益。
诗歌鉴赏艺术手法题(二)诗歌鉴赏艺术手法题(二)
诗歌鉴赏艺术手法题(二)生动隽美谱华章——诗歌艺术手法(二)之表现手法一、诗歌鉴赏中常用的表现手法类别(一)古代诗歌常用的表达方式1、记叙。2、描写。可分为正面描写与侧面描写。3、议论。4、抒情。可分为直接抒情与间接抒情。间接抒情分为寓情于景、借用典故?、?乐景哀情?、??托物言志??、?以景结情
例:1、直接抒情登幽州台歌??陈子昂前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。2、间接抒情:借景或借物抒情赋得古原草送别白居易离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。远芳侵古道,晴翠接荒城。又送王孙去,萋萋满别情。?3、托物言志蝉?????虞世南垂绥饮清露,流响出疏桐。居高声自远,非是藉秋风。托物言志,诗人借自然界中的某物自身具有的特征,来表达某种志向或情感,诗中的物带有了人格化的色彩。?4、以乐景写哀情谢亭送别劳歌一曲解行舟,红叶青山水急流。日暮酒醒人已远,滿天风雨下西楼。上联以“红叶青山”这样亮丽诗意的景色,反衬诗人离愁别恨。《姜斋诗话》说:“以乐景写哀,以哀景写乐,一倍增其哀乐。?5、以景结情山中????王勃长江悲已滞,万里念将归。况属高风晚,山山黄叶飞。三四两句“况属高风晚,山山黄叶飞”,写诗人在山中望见的实景,秋风萧瑟、黄叶飘零的景象,既用来衬映旅思乡愁,也可以说是用来比拟诗人的萧瑟心境、飘零旅况。?练习:淮上即事寄广陵亲故[唐]韦应物前舟已眇眇,欲渡谁相待?秋山起暮钟,楚雨连沧海。风波离思满,宿昔容鬓改。独鸟下东南,广陵何处在?“一切景语皆情语。”请从“山”、“雨”、“鸟”三个角度入手,简要评析这首诗所表达的感情。给分标准:由“山”、“雨”的角度评析出孤寂、凄怆等情感给3分;由“鸟”的角度评析出思乡之情给3分。评析示例:秋日远山传来寺庙悠长的暮钟,茫茫楚天挂上了霏霏雨幕,苍凉黯淡的傍晚景色烘托出诗人思家念远的孤寂、凄怆之情;最后,诗人运用反衬手法,写一只失群的伶仃小鸟飞往家乡广陵方向,归巢了。鸟飞东南,离巢愈近;而诗人前往西北,去亲愈远。这更引起了他满腹思乡的离思哀愁。?(三)表现手法:1、动静结合对事物、景物作动态、静态的描写,两者相互映衬,构成一种情趣。兰溪棹歌??戴叔伦凉月如眉挂柳湾,越中山色镜中看。兰溪三日桃花雨,半夜鲤鱼来上滩。从诗的结构看,前二句是静景,后二句是动景,结句尤为生动传神,一笔勾勒,把整个画面画活了,使人感到美好的兰溪山水充满蓬勃生机,是全诗最精彩的点睛之笔。山居秋暝????王维空山新雨后,天气晚来秋。明月松间照,清泉石上流。竹喧归浣女,莲动下渔舟。随意春芳歇,王孙自可留。前一句写山上一尘不染的松树,皎洁的月光,以及月光穿过树叶的缝隙在林间留下班驳的影子,都给人以明净清幽的感受——这是通过静态描写来突出山中的静谧。第二句写山泉因雨后水量充足,流势增大,从石上流过,淙淙有声——这是动态描写,以动衬静,更反衬出山中的宁静。2、以动衬静入若耶溪????王籍艅艎何泛泛,空水共悠悠。阴霞生远岫,阳景逐回流。?蝉噪林逾静,鸟鸣山更幽。此地动归念,长年悲倦游“蝉噪林逾静,鸟鸣山更幽”,以动衬静。是为反衬。3、正面描写与侧面描写对描写对象进行正面的直接的描写是正面描写;描写对象周围的事物,使对象更鲜明、突出的是侧面描写。(关羽)出帐提刀,飞身上马。众诸侯听得关外鼓声大振,喊声大举,如天摧地塌,岳撼山崩,众皆失惊。正欲探听,鸾铃响处,马到中军,云长提华雄之头,掷于地上,其酒尚温。??????????????????????????????????——节选自《三国演义》夜雪已讶衾枕冷,复见窗户明。夜深知雪重,时闻折竹声。这首诗简炼朴实,不直接描摹雪的状态,而是借人的感受作侧面描写。首句写触觉,二句写视觉,三四句写听觉。诗人以不同感觉,不断变换角度,处处写人,又处处写雪。4、衬托利用事物间近似或对立的条件,以一些事物为陪衬来突出某些事物的艺术手法。利用事物的近似条件来衬托一事物,称正衬;利用事物的对立条件来衬托一事物,称反衬。旅夜书怀??杜甫细草微风岸,危樯独夜舟。星垂平野阔,月涌大江流。名岂文章著?官应老病休。飘飘何所似?天地一沙鸥。?月夜???杜甫今夜鄜州月,闺中只独看。遥怜小儿女,未解忆长安。香雾云鬟湿,清辉玉臂寒。何时倚虚幌,双照泪痕干?用小儿女的“不解忆”反衬妻子的“忆”,突出那个独字,又进一层。?独不见沈佺期卢家少妇郁金堂,海燕双栖玳瑁梁。九月寒砧催木叶,十年征戍忆辽阳。白狼河北音书断,丹凤城南秋夜长。谁为含愁独不见,更教明月照流黄。[注]“九月”句意思:寒风吹落木叶,妇人们为征夫准备冬衣。???“流黄”:一种绢,此处指帷帐。简要分析这首诗的写作手法及其作用(任意确定两个特点,适度展开)。以“海燕双栖”反衬少妇的孤独;用“明月照流黄”烘托少妇的愁思;少妇居室之美与思夫之愁形成鲜明对比,突出少妇精神上的痛苦;寒砧声、落叶声烘托少妇思念,悲伤的心情;人物心情与环境气氛密切结合;运用多种修辞手法。其它说法言之成理,自圆其说即可。?5、渲染对环境、景物作多方面的描写形容,以突出形象,加强艺术效果。登高??杜甫风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋长作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒杯。首联俯仰所见所闻,一连出现六个特写镜头,渲染秋江景物的特点。?6、用典一般而言,古诗词中的用典有以下几种情形:①????化用前人语句,如《孟子》中的“狗彘食人食而不知检,途有饿莩而不知发”,为杜甫点化,在《咏怀五百字》中写出:“朱门酒肉臭,路有冻死骨。”又如《扬州慢》中的“过春风十里,尽荠麦青青”,引用杜牧诗句,表现昔日扬州十里长街的繁荣景况,是虚写。②引用神话故事,如李贺的《李凭弹箜篌引》,有“江娥啼竹素女愁,李凭中国弹箜篌”,②????用历史故事,《出塞》“秦时明月汉时关,万里长征人未还。但是龙城飞将在,不教胡马度阴山。”三、四句借用飞将军李陵的典故,《史记?李将军传》中说:“(李)广居右北平,匈奴闻之,号曰汉之飞将军。”如梦令????????????????严蕊道是梨花不是;道是杏花不是。白白与红红,别是东风情味。曾记,曾记,人在武陵微醉。(1)这首宋词用了一个著名的典故,它出自谁的什么作品?由此可知这首宋词抒写的是什么事物?(2)请就这首宋词表达的感情和运用的写法谈谈你的看法。答案:①“人在武陵微醉”一句用了“武陵人”的典故,出自晋代文学家陶渊明的《桃花源记》,由此可知这首宋词抒写的是桃花。??????②这首宋词表达了心地高洁、超脱世俗的感情。这首词以物况人,“白白与红红”,一树花分红、白两色,高标逸韵,独特别致,作者正是以这“别是东风情味”的红白桃花自况。这首词还用了映衬对比写法,以梨花之白,杏花之红既映衬又对比,赞美了红白桃花独标一格,超拔于春天群芳之上。7、以小见大:由平凡细微的事情反映重大的主题。以小物写大主题以小景传大境界赤壁折戟沉沙铁未销,自将磨洗认前朝。东风不与周郎便,铜雀春深锁二乔。??这是一首咏史诗,抒发的是对国家兴亡的感慨,可谓大内容,大主题,但这大内容、大主题却是通过"小物""小事"来显示的。诗的开头两句由一个小小的沉埋于沙中的"折戟",想到汉末分裂动乱的年代,想到赤壁之战的风云人物,后二句把"二乔"不曾被捉这件小事与东吴霸业、三国鼎立的大主题联系起来,写得具体、可感.次北固山下客路青山下,行舟绿水前。潮平两岸阔,风正一帆悬。海日生残夜,江春入旧年。乡书何处达?归雁洛阳边。?次联的“潮平两岸阔”,“阔”,是表现“潮平”的结果。春潮涌涨,江水浩渺,放眼望去,江面似乎与岸平了,船上人的视野也因之开阔。这一句,写得恢弘阔大,下一句“风正一帆悬”,便愈见精彩。“悬”是端端直直地高挂着的样子。诗人不用“风顺”而用“风正”,是因为光“风顺”还不足以保证“一帆悬”。风虽顺,却很猛,那帆就鼓成弧形了。只有既是顺风,又是和风,帆才能够“悬”。那个“正”字,兼包“顺”与“和”的内容。这一句写小景已相当传神。但还不仅如此,如王夫之所指出,这句诗的妙处,还在于它“以小景传大景之神”(《姜斋诗话》卷上)。可以设想,如果在曲曲折折的小河里行船,老要转弯子,这样的小景是难得出现的。如果在三峡行船,即使风顺而风和,却依然波翻浪涌,这样的小景也是难得出现的。诗句妙在通过“风正一帆悬”这一小景,把平野开阔、大江直流、波平浪静等等的大景也表现出来了。?虚实关系1、虚实结合??????2、化虚为实???3、化实为虚诗歌中的“虚”诗歌的“虚”,是指直觉中看不见摸不着,却又能从字里行间体味出那些虚象和空灵的境界。????具体说来,诗歌中的“虚”包括以下三类:?1、神仙鬼怪世界和梦境。诗人往往借助这类虚无的境界来反衬现实。这就叫以虚象显实境。《梦游天姥吟留别》仙境就是一个虚象。诗云:“日月照耀金银台”、“霓为衣兮风为马”、“虎鼓瑟兮鸾回车”、“仙之人兮列如麻”。李白描绘了一幅美好的图景,图景的美好反衬出现实的黑暗。??2、已逝之景之境。这类虚景是作者曾经经历过或历史上曾经发生过的景象,但是现时却不在眼前。虞美人????李煜春花秋月何时了,往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁,恰似一江春水向东流。?念奴娇赤壁怀古????苏轼大江东去,浪淘尽、千古风流人物。故垒西边,人道是、三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间、樯虏灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。?析:李煜《虞美人》中“雕栏玉砌应犹在,只是朱颜改”,句中“故国”的“雕栏玉砌”存在,但此时并不在眼前,也是虚象。作者将“雕栏玉砌”与“朱颜”对照着写,颇有故国凄凉,物是人非之感。苏轼的《念奴娇?赤壁怀古》中云:“谈笑间,樯橹灰飞烟灭。”再现了火烧赤壁这一史实。显然不是发生在眼前,故也是虚景。?3、设想的未来之境。这类虚境是还没有发生的,它表现的情将一直延伸到未来而不断绝。故写愁,将倍增其愁;写乐将倍增其乐。雨霖铃????柳永寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,留恋处、兰舟催发。执手相看泪眼,竟无语凝噎。念去去,千里烟波,暮霭沉沉楚天阔。?多情自古伤离别,更那堪冷落清秋节!今宵酒醒何处?杨柳岸、晓风残月。此去经年,应是良辰好景虚设。便纵有千种风情,更与何人说?析:上片除“念去去千里烟波,暮霭沉沉楚天阔”外,写的都是眼前实景、实事,写词人和心爱的人不忍分别又不得不别的心情,是实写;下片写对别后生活的设想,是虚写,着意描绘词人孤独寂寞的心情。虚写,状不在眼前的事物如在眼前,引起读者的想象。虚实结合,淋漓尽致写出了离别时的依依不舍之情。?b有时是相辅相成形成渲染烘托,从而突出的中心的。塞上听吹笛????(高适)???????雪净胡天牧马还,月明羌笛戍楼间。???????借问梅花何处落,风吹一夜满天山。前二句写的是实景:胡天北地,冰雪消融,是牧马的时节了.傍晚战士赶着马群归来,天空洒下明月的清辉……开篇就造成一种边塞诗中不多见的和平宁谧的气氛.三.四句将”梅花落”拆用,又构成一种虚景,仿佛风吹的不是笛声而是落梅的花片,它们四处飘散,一夜之中和色和香洒满关山.这固然是写声成象,但它是由曲名拆用形成的假象,以设问出之,虚之又虚.而这虚景又恰与雪净月明的实景配搭和谐,虚实交错,构成美妙阔远的意境.踏莎行???欧阳修候馆梅残,溪桥柳细,草薰风暖摇征辔。离愁渐远渐无穷,迢迢不断如春水。寸寸柔肠,盈盈粉泪,楼高莫近危阑倚。平芜尽处是春山,行人更在春山外。《踏莎行》上阙写实,通过初春景象反衬“行人”的离愁别绪。下阙写虚。通过设“行人”想妻子凭栏远望,思念“行人”的愁苦之象,来写愁思。妻思夫,夫想妻。虚实相生,从而将离愁别绪抒发得淋漓尽致。塞上听吹笛???????高适雪净胡天牧马还,月明羌笛戍楼间。借问梅花何处落,风吹一夜满天山。前二句写的是实景:胡天北地,冰雪消融,是牧马的时节了.傍晚战士赶着马群归来,天空洒下明月的清辉……开篇就造成一种边塞诗中不多见的和平宁谧的气氛.三.四句将”梅花落”拆用,又构成一种虚景,仿佛风吹的不是笛声而是落梅的花片,它们四处飘散,一夜之中和色和香洒满关山.这固然是写声成象,但它是由曲名拆用形成的假象,以设问出之,虚之又虚.而这虚景又恰与雪净月明的实景配搭和谐,虚实交错,构成美妙阔远的意境.?化虚为实:把抽象感情与哲理赋予具体而生动的形象,运用比喻。只恐双溪蚱蜢舟,载不动许多愁。问君能有几多愁,恰似一江春水向东流。绿杨烟外晓寒轻?化实为虚,如“化景物为情思”鸡声茅店月,人迹板桥霜。“鸡声茅店月,人迹板桥霜”一联,把六种形象性的词语:鸡声、茅店、月、板桥、霜和霜上的人迹并列在一起,这些词语描述的形象,已不再只是事物的客观物象,而是融入了作者凄凉悲怆体验的意象了。诗人正是利用这些意象的组合,构成一种“道路辛苦、羁旅愁思”的意境。?(四)结构形式:诗歌的结构形式,常见的首尾照应,开门见山、层层深入,卒章显志,过渡、铺垫、伏笔等。1、抑扬把要贬抑否定的方面和要肯定的方面同时说出来,只突出强调其中一个方面以达到抑此扬彼或抑彼扬此的目的。有先扬后抑和先抑。闺??怨???王昌龄闺中少妇不知愁,春日凝妆上高楼。忽见陌头杨柳色,悔教夫婿觅封侯。这首诗采用先扬后抑的手法,先写少妇“不知愁”,后面才说她“悔”,通过对少妇情绪微妙变化的刻画,深刻表现了少妇因触景而产生的感伤和哀怨的情绪,突出了“闺怨”的主题。前出塞?????????????????????????????????杜甫?????????????挽弓当挽强,用箭当用长。射人先射马,擒贼先擒王。?????????????杀人亦有限,列国自有疆。苟能制侵陵,岂在多杀伤?从艺术构思上说,作者采用了先扬后抑的手法:前四句以通俗而富哲理的谣谚体开势,讲如何练兵用武,怎样克敌制胜;后四句却写如何节制武功,力避杀伐,逼出“止戈为武”的本旨。2、照应诉衷情?????陆游????????当年万里觅封侯,匹马戍梁州。关河梦断何处,尘暗旧貂裘。?????胡未灭,鬓先秋,泪空流。???????此生谁料,心在天山,身老沧州!【分析】此诗共分两阕,下阕照应上阕。“心在天山”与“当年”句相应;“身老苍州”与“关河梦”句相应,目的在于构成对照,抒发了词人心酸遗恨的苍凉心情。?清平乐????(黄庭坚)春归何处?寂寞无行路。若有人知春去处,唤取归来同住。?????春无踪迹谁知?除非问黄鹂。百啭无人能解,因风飞过蔷薇。(1).词中所写的春日景物较少,只选了“黄鹂”和“蔷薇”,请说出“黄鹂”在表达作者的惜春之情时起到什麽作用?(2).这首词是怎样表现惜春主题的?【分析】(1)黄鹂常伴着春天出现,黄鹂宛啭而鸣,增添了春天的色彩;问取黄鹂,黄鹂因风而飞,又增添了词的情趣。(2)该词曲笔渲染,一波三折:春逝去,人寂寞,希望有人知春去处以唤回同住,以此奇想,表达对春的执着,这是一折;无人告知,也不可唤回,只好问与春同来的黄鹂,这是二折;黄鹂百啭不可解,令人怅惘,这是三折。一首小词,竟几经曲折,层层深入,可谓巧妙。?考查形式:1、某诗句运用了哪种表达方式(技巧),有什么作用(妙处)?2、诗歌中的感情是怎样表达出来的?3、诗歌在情与景的关系上是怎样处理的?【答题步骤】第一步、审清题干要求,确定答题步骤。第二步、指出什么地方用了什么技巧或什么手法。第三步、结合诗句具体分析怎样用的这种手法。第四步、用这个手法有什么好处、作用,抒发了作者什么样的感情。【课堂练兵】阅读下面这首古诗,回答问题。咏怀八十二首(其七十九)阮籍林中有奇鸟,自言是风凰。清朝饮醴泉,日夕栖山冈。高鸣彻九州,延颈望八荒。适逢商风起,羽翼自摧藏。一去昆仑西,何时复回翔。但恨处非位,怆恨使心伤。[注]①商风:秋风。②怆悢:悲伤。这首诗整体上运用了什么表现手法?表达了怎样的情感?请简要分析。参考答案:(步骤一)这首诗用了托物言志的手法。(步骤二)通过对性情高洁、心系苍生、没有同伴、没有共鸣的“凤凰”的意象的描写。(步骤三)抒发了诗人对命运的无奈和壮志难酬的苦闷心情;也充分反映了他极度苦闷的心情和忧愤深广的情怀,同时也反衬了当时社会的黑暗与腐敗。阅读下面这首诗,完成8-9题。岁暮①[唐]杜甫岁暮远为客,边隅还用兵。烟尘犯雪岭②,鼓角动江城。天地日流血,朝廷谁请缨?济时敢爱死?寂寞壮心惊![注]①本诗作于唐代宗广德元年(763)末,时杜甫客居阆州(今四川阆中)。②雪岭:又名雪山,在成都(今四川成都)西。雪岭临近松州、维州、保州(均在今四川成都西北),杜甫作本诗时,三州已被吐蕃攻占。9.这首诗使用了多种表达技巧,请举出两种并作赏析。(4分)【参考答案】借代,如“烟尘”代边境战争;与后文“鼓角”相应,从视角和听觉两方面突出了战争的紧张,渲染了时局的艰危。用典,如,“请缨”,典出《汉书.终军传》;在诗句中暗示朝中无人为国分忧,借以表达诗人对国事的深深忧虑。[试题考点]题考查“鉴赏文学作品的形象、语言和表达技巧”的能力。能力层级为D。邯郸冬至夜思家白居易邯郸驿里逢冬至,抱膝灯前影伴身。想得家中夜深坐,还应说着远行人。问:作者是怎样写“思家”的?【参考答案】分析:本诗运用了虚实结合的手法。前两句写诗人此时的孤寂,是实。后两句写家人围坐灯前,谈论着自己这个远行人,是虚。作者主要通过一幅想像的画面,即冬至夜深时分,家人还围坐在灯前,谈论着自己这个远行之人,以此来表现“思家”的。绝句漫兴九首(其三)杜甫熟知茅斋绝低小,江上燕子故来频。衔泥点污琴书内,更接飞虫打着人。【注】这首词作于杜甫寓居成都草堂的第二年。问题:请从表现手法的角度,对这首诗作简要赏析。【参考答案】借景抒情。诗人描写了燕子频频飞入草堂书斋,“点污琴书”、“打着人”等活动,既凸现了燕子的可爱之态,又生动传神地表现出燕子对草堂书斋的喜爱,以及对诗人的亲昵。同时也透露出诗人在草堂安定生活的喜悦和悠闲之情。未展芭蕉(唐)钱珝冷烛无烟绿蜡干,芳心犹卷怯春寒。一缄书札藏何事,会被东风暗拆看。同儿辈赋未开海棠(其一)(金)元好问枝间新绿一重重,小蕾深藏数点红。爱惜芳心莫轻吐,且教桃李闹春风。22.简要分析这两首诗的表现手法。(5分)【参考答案】第一首巧妙运用比喻,如将未展芭蕉比作未燃的蜡烛、未拆封的书札,又把它比拟成芳心未展的少女,用“东风暗拆”想象芭蕉终于展开,不仅传神,而且传达出美好的情思。第二首运用衬托、比拟、对比等手法,不仅表现了海棠的天然之美,更赋予海棠一种沉稳独立、自主自爱的品格。晓至湖①上[清]厉鹗出郭晓色微,临水人意静。水上寒雾生,弥漫与天永。折②苇动有声,遥山淡无影。稍见初日开,三两列舴艋。安得学野凫,泛泛逐清景③。(选自《清诗选》)(2)请从表达技巧的角度对“折苇动有声,遥山淡无影”进行赏析。(3分)①对比,以“有声”与“无影”对比,近写声觉,远写视觉,突出层次的远近和景致的深阔。②对偶:以“折苇”对“逐出”,近景与远景相结合,以“动有声”对“淡无影”,听觉与视觉相结合:节奏优美(或形象丰富或层次分明)意境深刻、淡雅(或幽静、清新)。(其他看法,言之成理亦可。)鹧鸪天送廓之秋试①[宋]辛弃疾白苎②新袍入嫩凉。春蚕食叶响回廊,禹门③已准桃花浪,月殿先收桂子香。鹏北海,凤朝阳。又携书剑路茫茫。明年此日青云去,却笑人间举子忙。【注】①秋试:科举时代秋秀举行的考试。②白苎(zhù):用白色苎麻织成的布。③禹门:即龙门,古时以“鱼跃龙门”喻指考试得中。请举一例分析本词虚实相生的艺术手法。(3分)【参考答案】“白苎新袍入凉”“春蚕食叶响回廊”是实写,点明节令和环境;“明年此日青云去,却笑人间举子忙”是虚写,想象金榜题名后轻松愉悦的心情。虚实相生,表达对应考者的良好祝愿。【课后练兵】海淀二模阅读下面这首诗,完成13题。踏莎行?山居张抡秋入云山,物情潇洒,百般景物堪图画。丹枫万叶碧云边,黄花千点幽岩下。已喜佳辰,更怜清夜,一轮明月林梢挂。松醪[注]常与野人期,忘形共说清闲话。[注]“松醪”:是松膏酿制的酒。13.古今诗歌中有许多描写秋景的佳句,诗人对秋景的描写也各有千秋。请结合“丹枫万叶碧云边,黄花千点幽岩下”一句并再举一个描写秋景的句子,对它们的特色加以赏析。(不少于200字)(10分)【参考答案】13.(10分)第一问:(3分)万、千见壮,丹、碧、黄、幽见色彩,碧云边见旷远,幽岩下见清幽。秋山壮丽,色彩明丽、斑斓绚烂,宁静旷远、清幽,构成一幅色彩斑斓、意境深远的秋山画卷;联系诗词恰当(2分),分析意境(具体、合理)(3分)语言表达顺畅、清晰(2分)。朝阳二模13.阅读下面这首宋词,回答下列问题。(8分)满庭芳张风子咄哉牛儿,心壮力壮,几人能可牵系。为爱原上,娇嫩草萎萎。只管侵青逐翠,奔走后、岂顾群迷。争知道,山遥水远,回首到家迟。牧童,能有智,长绳牢把,短梢高携。任从它,入泥入水无为。我自心调步稳,青松下、横笛长吹。当归处,人牛不见,正是月明时。
本词最后三句“当归处,人牛不见,正是月明时”勾勒出一幅“月下晚归图”,,请简要赏析这样写有何妙处。(5分)【参考答案】(5分)这几句描写了牧童骑着牛儿回家,在一片清澈的月光下,人和牛的影子渐渐消失在归途中的画面(1分,解说诗句)。融情于景(1分,艺术手法),表现了强健倔强的牛儿和机智沉稳的牧童之间和谐美好的关系(或:“营造了和谐、宁静、美好的意境”)(1分,分析意境)。表达了词人对闲适自在的田园生活的热爱(或:“向往”“留恋”等)之情(1分,情感主旨)。全词以这样一幅牧童月下骑牛晚归的图景作为结尾,余韵悠长,令人回味(1分,艺术效果)。【评分参考】意思对即可。朝阳一模阅读下面这首诗,完成12、13题。12.(7分)耘田鼓[注]可朋(后蜀)农夫田头鼓,王孙筵上鼓。击鼓兮皆为鼓,一何乐兮一何苦?上有烈日,下有焦土。愿我天公降之以雨,令桑麻熟,仓箱富,不饥不寒,上下一般足。[注]耘田鼓:古代挂在田头树上的鼓,农忙时敲击,以激励催促农人提高劳作效率。13.本诗通过“击鼓”这样的生活小事,反映深刻的社会问题,发人深省。请指出这是什么写法。结合本诗,并联系其他文学作品,对这种写法做简要分析。(不少于200字)(10分)13.(10分)【评分参考】⑴写法2分。以小见大。(意思对即可)⑵结合本诗具体分析2分。恰当、合理,即可得满分。⑶联系其他文学作品分析4分。观点1分。1分:观点明确合理。0分:观点不合理或不明确。②阐发3分。3分:举例恰当、内容具体贴切、分析恰当。2分:存在一处不足。1分:存在两处不足。0分:存在三处不足。⑶语言表达2分。2分:语言流畅,有一定文采;表达清晰,有条理。1分:语言基本通顺,表达较清晰。0分:①语言不通顺,有较多语病,表达混乱。②不足50字。⑷字数不足,酌情扣分。每缺25字(一行)扣1分,扣满1分为止。
C#网络编程-4C#网络编程-4
/C#网络编程-4C#网络编程(订立协议和发送文件)-Part.4文件传输前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件。比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1、S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg、Client02.jpg、Client03.jpg;当我们输入R1、R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg、Server02.jpg、Server03.jpg。那么,我们该如何完成这件事呢?此时可能有这样两种做法:类似于FTP协议,服务端开辟两个端口,并持续对这两个端口侦听:一个用于接收字符串,类似于FTP的控制端口,它接收各种命令(接收或发送文件);一个用于传输数据,也就是发送和接收文件。服务端只开辟一个端口,用于接收字符串,我们称之为控制端口。当接到请求之后,根据请求内容在客户端开辟一个端口专用于文件传输,并在传输结束后关闭端口。现在我们只关注于上面的数据端口,回忆一下在第二篇中我们所总结的,可以得出:当我们使用上面的方法一时,服务端的数据端口可以为多个客户端的多次请求服务;当我们使用方法二时,服务端只为一个客户端的一次请求服务,但是因为每次请求都会重新开辟端口,所以实际上还是相当于可以为多个客户端的多次请求服务。同时,因为它只为一次请求服务,所以我们在数据端口上传输文件时无需采用异步传输方式。但在控制端口我们仍然需要使用异步方式。从上面看出,第一种方式要好得多,但是我们将采用第二种方式。至于原因,你可以回顾一下
ming-Part1.aspx"
Part.1(基本概念和操作)
中关于聊天程序模式的讲述,因为接下来一篇文章我们将创建一个聊天程序,而这个聊天程序采用第三种模式,所以本文的练习实际是对下一篇的一个铺垫。1.订立协议1.1发送文件我们先看一下发送文件的情况,如果我们想将文件client01.jpg由客户端发往客户端,那么流程是什么:客户端开辟数据端口用于侦听,并获取端口号,假设为8005。假设客户端输入了S1,则发送下面的控制字符串到服务端:[file=Client01.jpg,mode=send,port=8005]。服务端收到以后,根据客户端ip和端口号与该客户端建立连接。客户端侦听到服务端的连接,开始发送文件。传送完毕后客户端、服务端分别关闭连接。此时,我们订立的发送文件协议为:[file=Client01.jpg,mode=send,port=8005]。但是,由于它是一个普通的字符串,在上一篇中,我们采用了正则表达式来获取其中的有效值,但这显然不是一种好办法。因此,在本文及下一篇文章中,我们采用一种新的方式来编写协议:XML。对于上面的语句,我们可以写成这样的XML:<protocol><filename="client01.jpg"mode="send"port="8005"/></protocol>这样我们在服务端就会好处理得多,接下来我们来看一下接收文件的流程及其协议。NOTE:这里说发送、接收文件是站在客户端的立场说的,当客户端发送文件时,对于服务器来收,则是接收文件。1.2接收文件接收文件与发送文件实际上完全类似,区别只是由客户端向网络流写入数据,还是由服务端向网络流写入数据。客户端开辟数据端口用于侦听,假设为8006。假设客户端输入了R1,则发送控制字符串:<protocol><filename="Server01.jpg"mode="receive"port="8006"/></protocol>到服务端。服务端收到以后,根据客户端ip和端口号与该客户端建立连接。客户端建立起与服务端的连接,服务端开始网络流中写入数据。传送完毕后服务端、客户端分别关闭连接。2.协议处理类的实现和上面一章一样,在开始编写实际的服务端客户端代码之前,我们首先要编写处理协议的类,它需要提供这样两个功能:1、方便地帮我们获取完整的协议信息,因为前面我们说过,服务端可能将客户端的多次独立请求拆分或合并。比如,客户端连续发送了两条控制信息到服务端,而服务端将它们合并了,那么则需要先拆开再分别处理。2、方便地获取我们所想要的属性信息,因为协议是XML格式,所以还需要一个类专门对XML进行处理,获得字符串的属性值。2.1ProtocalHandler辅助类我们先看下ProtocalHandler,它与上一篇中的RequestHandler作用相同。需要注意的是必须将它声明为实例的,而非静态的,这是因为每个TcpClient都需要对应一个ProtocalHandler,因为它内部维护的patialProtocal不能共享,在协议发送不完整的情况下,这个变量用于临时保存被截断的字符串。publicclassProtocolHandler{
???privatestringpartialProtocal;//保存不完整的协议
???
???publicProtocolHandler(){
???????partialProtocal="";??????
???}
???publicstring[]GetProtocol(stringinput){
???????returnGetProtocol(input,null);
???}
???
???//获得协议
???privatestring[]GetProtocol(stringinput,List<string>outputList){
???????if(outputList==null)
???????????outputList=newList<string>();
???????if(String.IsNullOrEmpty(input))
???????????returnoutputList.ToArray();
???????if(!String.IsNullOrEmpty(partialProtocal))
???????????input=partialProtocal+input;
???????stringpattern="(^<protocol>.*?</protocol>)";
???????//如果有匹配,说明已经找到了,是完整的协议
???????if(Regex.IsMatch(input,pattern)){
???????????//获取匹配的值
???????????stringmatch=Regex.Match(input,pattern).Groups[0].Value;
???????????outputList.Add(match);
???????????partialProtocal="";
???????????//缩短input的长度
???????????input=input.Substring(match.Length);
???????????//递归调用
???????????GetProtocol(input,outputList);
???????}else{
???????????//如果不匹配,说明协议的长度不够,
???????????//那么先缓存,然后等待下一次请求
???????????partialProtocal=input;
???????}
???????returnoutputList.ToArray();
???}
}因为现在它已经不是本文的重点了,所以我就不演示对于它的测试了,本文所附带的代码中含有它的测试代码(我在ProtocolHandler中添加了一个静态类Test())。2.2FileRequestType枚举和FileProtocol结构因为XML是以字符串的形式在进行传输,为了方便使用,我们最好构建一个强类型来对它们进行操作,这样会方便很多。我们首先可以定义FileRequestMode枚举,它代表是发送还是接收文件:publicenumFileRequestMode{
???Send=0,
???Receive
}接下来我们再定义一个FileProtocol结构,用来为整个协议字符串提供强类型的访问,注意这里覆盖了基类的ToString()方法,这样在客户端我们就不需要再手工去编写XML,只要在结构值上调用ToString()就OK了,会方便很多。publicstructFileProtocol{
???privatereadonlyFileRequestModemode;
???privatereadonlyintport;
???privatereadonlystringfileName;
???publicFileProtocol
???????(FileRequestModemode,intport,stringfileName){
???????this.mode=mode;
???????this.port=port;
???????this.fileName=fileName;
???}
???publicFileRequestModeMode{
???????get{returnmode;}
???}
???publicintPort{
???????get{returnport;}
???}
???publicstringFileName{
???????get{returnfileName;}
???}
???publicoverridestringToString(){
???????returnString.Format("<protocol><filename=\"{0}\"mode=\"{1}\"port=\"{2}\"/></protocol>",fileName,mode,port);
???}
}2.3ProtocolHelper辅助类这个类专用于将XML格式的协议映射为我们上面定义的强类型对象,这里我没有加入try/catch异常处理,因为协议对用户来说是不可见的,而且客户端应该总是发送正确的协议,我觉得这样可以让代码更加清晰:publicclassProtocolHelper{
???privateXmlNodefileNode;
???privateXmlNoderoot;
???
???publicProtocolHelper(stringprotocol){
???????XmlDocumentdoc=newXmlDocument();
???????doc.LoadXml(protocol);
???????root=doc.DocumentElement;
???????fileNode=root.SelectSingleNode("file");
???}
???//此时的protocal一定为单条完整protocal
???privateFileRequestModeGetFileMode(){
???????stringmode=fileNode.Attributes["mode"].Value;
???????mode=mode.ToLower();
???????if(mode=="send")
???????????returnFileRequestMode.Send;
???????else
???????????returnFileRequestMode.Receive;
???}
???//获取单条协议包含的信息
???publicFileProtocolGetProtocol(){
???????FileRequestModemode=GetFileMode();
???????stringfileName="";
???????intport=0;
??????fileName=fileNode.Attributes["name"].Value;
???????port=Convert.ToInt32(fileNode.Attributes["port"].Value);
???????returnnewFileProtocol(mode,port,fileName);
???}
}OK,我们又耽误了点时间,下面就让我们进入正题吧。3.客户端发送数据3.1服务端的实现我们还是将一个问题分成两部分来处理,先是发送数据,然后是接收数据。我们先看发送数据部分的服务端。如果你从第一篇文章看到了现在,那么我觉得更多的不是技术上的问题而是思路,所以我们不再将重点放到代码上,这些应该很容易就看懂了。classServer{
???staticvoidMain(string[]args){
???????Console.WriteLine("Serverisrunning...");
???????IPAddressip=IPAddress.Parse();
???????TcpListenerlistener=newTcpListener(ip,8500);
???????listener.Start();??????????//开启对控制端口8500的侦听
???????Console.WriteLine("StartListening...");
???????while(true){
???????????//获取一个连接,同步方法,在此处中断
???????????TcpClientclient=listener.AcceptTcpClient();?????????????
???????????RemoteClientwapper=newRemoteClient(client);
???????????wapper.BeginRead();
???????}
???}
}
publicclassRemoteClient{
???privateTcpClientclient;
???privateNetworkStreamstreamToClient;
???privateconstintBufferSize=8192;
???privatebyte[]buffer;
???privateProtocolHandlerhandler;
???
???publicRemoteClient(TcpClientclient){
???????this.client=client;
???????//打印连接到的客户端信息
???????Console.WriteLine("\nClientConnected!{0}<--{1}",
??????????????????//获得流
???????streamToClient=client.GetStream();
???????buffer=newbyte[BufferSize];
???????handler=newProtocolHandler();
???}
???//开始进行读取
???publicvoidBeginRead(){??????
???????AsyncCallbackcallBack=newAsyncCallback(OnReadComplete);
???????streamToClient.BeginRead(buffer,0,BufferSize,callBack,null);
???}
???//再读取完成时进行回调
???privatevoidOnReadComplete(IAsyncResultar){
???????intbytesRead=0;
???????try{
???????????lock(streamToClient){
???????????????bytesRead=streamToClient.EndRead(ar);
???????????????Console.WriteLine("Readingdata,{0}bytes...",bytesRead);
???????????}
???????????if(bytesRead==0)thrownewException("读取到0字节");
???????????stringmsg=Encoding.Unicode.GetString(buffer,0,bytesRead);
???????????Array.Clear(buffer,0,buffer.Length);???????//清空缓存,避免脏读
???????????//获取protocol数组
???????????string[]protocolArray=handler.GetProtocol(msg);
???????????foreach(stringproinprotocolArray){
???????????????//这里异步调用,不然这里可能会比较耗时
???????????????ParameterizedThreadStartstart=
???????????????????newParameterizedThreadStart(handleProtocol);
???????????????start.BeginInvoke(pro,null,null);
???????????}
???????????//再次调用BeginRead(),完成时调用自身,形成无限循环
???????????lock(streamToClient){
???????????????AsyncCallbackcallBack=newAsyncCallback(OnReadComplete);
???????????????streamToClient.BeginRead(buffer,0,BufferSize,callBack,null);
???????????}
???????}catch(Exceptionex){
???????????if(streamToClient!=null)
???????????????streamToClient.Dispose();
???????????client.Close();
???????????Console.WriteLine(ex.Message);?????//捕获异常时退出程序
???????}
???}
???//处理protocol
???privatevoidhandleProtocol(objectobj){
???????stringpro=objasstring;
???????ProtocolHelperhelper=newProtocolHelper(pro);
???????FileProtocolprotocol=helper.GetProtocol();
???????if(protocol.Mode==FileRequestMode.Send){
???????????//客户端发送文件,对服务端来说则是接收文件
???????????receiveFile(protocol);
???????}elseif(protocol.Mode==FileRequestMode.Receive){
???????????//客户端接收文件,对服务端来说则是发送文件
???????????//sendFile(protocol);
???????}
???}
???privatevoidreceiveFile(FileProtocolprotocol){
???????//获取远程客户端的位置
???????IPEndPointasIPEndPoint;
???????IPAddressip=endpoint.Address;
???????
???????//使用新端口号,获得远程用于接收文件的端口
???????endpoint=newIPEndPoint(ip,protocol.Port);
???????//连接到远程客户端
???????TcpClientlocalClient;
???????try{
???????????localClient=newTcpClient();
???????????localClient.Connect(endpoint);
???????}catch{
???????????Console.WriteLine("无法连接到客户端-->{0}",endpoint);
???????????return;
???????}
???????//获取发送文件的流
???????NetworkStreamstreamToClient=localClient.GetStream();
???????//随机生成一个在当前目录下的文件名称
???????stringpath=
???????????Environment.CurrentDirectory+"/"+generateFileName(protocol.FileName);
???????byte[]fileBuffer=newbyte[1024];//每次收1KB
???????FileStreamfs=newFileStream(path,FileMode.CreateNew,FileAccess.Write);
???????//从缓存buffer中读入到文件流中
???????intbytesRead;
???????inttotalBytes=0;
???????do{
???????????bytesRead=streamToClient.Read(buffer,0,BufferSize);????????????
???????????fs.Write(buffer,0,bytesRead);
???????????totalBytes+=bytesRead;
???????????Console.WriteLine("Receiving{0}bytes...",totalBytes);
???????}while(bytesRead>0);
???????Console.WriteLine("Total{0}bytesreceived,Done!",totalBytes);
???????streamToClient.Dispose();
???????fs.Dispose();
???????localClient.Close();
???}
???//随机获取一个图片名称
???privatestringgenerateFileName(stringfileName){
???????DateTimenow=DateTime.Now;
???????returnString.Format(
???????????"{0}_{1}_{2}_{3}",now.Minute,now.Second,now.Millisecond,fileName
???????);
???}
}这里应该没有什么新知识,需要注意的地方有这么几个:在OnReadComplete()回调方法中的foreach循环,我们使用委托异步调用了handleProtocol()方法,这是因为handleProtocol即将执行的是一个读取或接收文件的操作,也就是一个相对耗时的操作。在handleProtocol()方法中,我们深切体会了定义ProtocolHelper类和FileProtocol结构的好处。如果没有定义它们,这里将是不堪入目的处理XML以及类型转换的代码。handleProtocol()方法中进行了一个条件判断,注意sendFile()方法我屏蔽掉了,这个还没有实现,但是我想你已经猜到它将是后面要实现的内容。receiveFile()方法是实际接收客户端发来文件的方法,这里没有什么特别之处。需要注意的是文件存储的路径,它保存在了当前程序执行的目录下,文件的名称我使用generateFileName()生成了一个与时间有关的随机名称。3.2客户端的实现我们现在先不着急实现客户端S1、R1等用户菜单,首先完成发送文件这一功能,实际上,就是为上一节SendMessage()加一个姐妹方法SendFile()。classClient{
???staticvoidMain(string[]args){
???????ConsoleKeykey;
???????ServerClientclient=newServerClient();
???????stringfilePath=Environment.CurrentDirectory+"/"+"Client01.jpg";
???????if(File.Exists(filePath))
???????????client.BeginSendFile(filePath);
???????
???????Console.WriteLine("\n\n输入\"Q\"键退出。");
???????do{
??????????key=Console.ReadKey(true).Key;
???????}while(key!=ConsoleKey.Q);
???}
}
publicclassServerClient{
???privateconstintBufferSize=8192;
???privatebyte[]buffer;
???privateTcpClientclient;
???privateNetworkStreamstreamToServer;
???publicServerClient(){
??????try{
???????????client=newTcpClient();
???????????client.Connect("localhost",8500);?????//与服务器连接
???????}catch(Exceptionex){
???????????Console.WriteLine(ex.Message);
???????????return;
???????}
???????buffer=newbyte[BufferSize];
???????//打印连接到的服务端信息
???????Console.WriteLine("ServerConnected!{0}-->{1}",
??????????????????streamToServer=client.GetStream();
???}
???
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年丹东市荣军优抚医院(原丹东市公安医院)招聘备考题库含答案详解
- 2026年中国人民大学通州校区建设部现面向社会公开招聘非事业编制工作人员备考题库及1套完整答案详解
- 2026年乐清市文化和广电旅游体育局公开招聘越剧演员(学员)的备考题库及答案详解1套
- 湖南省长沙市2025-2026学年高三上学期第二次联考语文试题及参考答案
- 中风患者的非药物治疗与护理
- 乡镇医院护理人员的护理疼痛管理培训
- 2026春招:美的集团试题及答案
- 奢侈品维护技巧:提升客户满意度
- 2026春招:京东方面试题及答案
- 2026春招:计算机视觉工程师真题及答案
- 肿瘤药物给药顺序课件
- 海南计算机与科学专升本试卷真题及答案
- 企业安全一把手授课课件
- 学校中层干部述职报告会
- 粮库安全生产责任制
- 花卉学课件:菊花
- 中班扎染课教案
- 音乐疗法对焦虑缓解作用-洞察及研究
- 2023年广东省深圳市中考适应性数学试卷(原卷版)
- 建筑工程钢筋质量验收报告模板
- 《海南自由贸易港建设总体方案》解读
评论
0/150
提交评论