2023年计算机网络原理实验报告.pdf
《2023年计算机网络原理实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机网络原理实验报告.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、多线程Web服务器i实验目的:用JAVA语言开发一个多线程的WEB服务器,它能并行服务于多个请求。发送网页文献,让网页文献可以通过在U R L中制定端标语来被浏览器使用。2实验代码及截图 I 巨 http:/localhost:8081/index.htm收藏夹 8 笆 6.11 目 6,9 笆 http www.baidu 1 首页四 http:/localhost:8081/index.htm145646-456 收藏夹 W 电6.11钝6.9*http-www.baidu,首页J原交通大学g 卷Internet Explorer无法显示该网页Internet Explorer无法显示该网
2、页您可以尝试以下操作:更多信息class C on n ection T h re a d e x ten d s Thread Socket c 1 ie n t;i n t cou n te r;o pub 1 ic Con n e c t i on T hr e ad(S o cket c l,i n t c)。d ie n t=c l;,c o unt e r=c;b b opublic v o id ru n()/线程体。t r y o b。St r i n g de s tlP=c lie n t.ge t Ine t Addre s s().to S trin g();/客户机I
3、P地址。in t d e stp o r t=c 1 i e nt.g e t P o r t();/客户机端标语。Syst e m.o ut.pr i n tln(Conn e c t ion+co u nter+:c o nne c ted t o+destIP+on p or t +des t port+.);o o P rin tS tr e am out s tream=n ew P rin tS tr e am(c 1 i en t.get0 u tputS t r eam();。Da t aln p u tS tr e am in s tream=new Dat aInpu t
4、S tream(cli ent.ge t I n putS tream();。o S tr i n g in 1 ine=in s tream.r,ead L.i ne();/读取Web浏览器提交的请求信息。System.ou t.p r in t 1 n(Re c e i v e d:+i n lin e);0 00 0o o i f (g e t re q ues t(i n lin e)(/假如是GET请求 S t r i ng f ilenam e=g e t f ile n a me(in 1 in e);,6 o F i 1 e f i l e =new F i 1 e(f il
5、e name);。if(f i le.e x is ts()/若文献存在,则将文献送给W e b浏览器o o System.out.p rin tln(file n a m e+r e q u e sted.);o o o ou t stream .p ri n t l n(HTT P/1 .0 2 00 OK);。o o u ts tr e a m.pr i n t In(M lM E _ v e rs io n:l.0 );o 。outs t ream,pr i n t 1 n(Cont e n t _ Type:te x t/h tm1 );o o o o i n t len=(i n
6、t)f ile.le n g th();。outs t ream.p rin tin (C o n ten t _ L e n g t h:+1 e n);o oooo o u ts tr e am.p r in tln ();o o o o s e n d file(o u t s t re a m,file);/发送文献so o out s tre am.f lu s h();。e l s e /文献不存在时s o St r ing notfou n d=N o tFou n d E rro r 404-f ile notfou nd ;。o o u t s tream.p r i n t
7、in (HTTP/1.0 40 4 n o f o und);。o u ts t r e am.pr i n tln(C o n t e nt_Typ e:t e x t/h tm l);。o u t st r e a m.p rin tln(Con t e nt_Length:+notfoun d.le n g th()+2);d o o oo u t s t ream,p r in t ln();。3 b o o u t s t r earn,pr in t i n(n o tfo u n d);outstream.flush();O d O 0 0b b bo o o long m l=
8、l;o w h ile (ml0)。i f (s.su b s trin g(0,3).eq u a Islg n o r e Ca s e(G E T)r e t u rn tr u e;re tu r n f a ls e;)/*获取要访问的文献名*/S trin g g e tfilenam e(S trin g s)0。S tring f=s.subs t r i ng(s.i n d exOf()+1 );。f=f.s u b s t r in g(0 jf.in d exO f();6 t r y (di f(f.c ha r A t(0)=/)o o f=f.subs t r i
9、n g(l);。c a tch(S tr in g I n d e x OutOfBou n dsE x ception e)Sy s tem.ou t.p r i n tln(E x c e p t i on:+e);)i f (f.e qual s()f=in dex.htm l ;re t u r n f;)/*把指定文献发送给Web浏 览 器*/v o id sen d file(P rin t S t ream outs,F ile f i le)t r y 。Datal n putStream in =new D atalnputS t ream(n e w F ile in p
10、u tS t r e am(fi 1 e);i n t 1 e n=(i n t)f i 1 e.le n g th();o b y te b u f=n e w b yt e 1 e n;。i n.readFul 1 y(b u f);outs,w rite(b u f,0,le n);o u ts.f 1 u s h();。i n.close();o c a t c h(Ex c eption e)bbo Sys t em.out.p r in tl n(Er r or re tr i e v in g f i le.);。System.exi t(1 );0 )p u b 1 i c c
11、 lass webseve r o pu bli c s t at i c vo i d mai n(S t rin g args),I I TODO Auto g e nera t ed meth o d stubi nt i=l,PORT=8 0 8 1 ;Server S o c k e t s er v er=n ul 1 ;。S o cket d ie n t=nul 1 ;os try 0 0server=new S e rv e r S o cket(PORT);。o Sy s tem.ou t.p ri n t 1 n(Web S e rver i s lis t e n i
12、n g onport+s e rve r.ge t Lo c alPor t();0 0。whi 1 e(t r u e)0 0。c l i e nt=se r ve r.a c c e p t();/接受客户机的连接请求。new C on n ectionTh r e a d(c 1 i e n t,i).s ta rt。;。o i+;b c atch(Ex c eption e)。S yste m.o u t.prin t 1 n(e);)3实验软硬件环境e e l i p s eWin d o ws xpI E浏览器4实验环节(1)连接:Web浏览器与Web服务器建立连接,打开一个称为s
13、ocket(套接字)的虚拟文献,此文献的建立标志着连接建立成功。(2)请求:Web浏览器通过sock e t 向 W e b 服务器提交请求。HTTP的请求一般是GET或 P 0 S T 命令(POST用于FORM参数的传递)。G E T 命令的格式为:GE T 途径/文献名H T T P/1.1文献名指出所访问的文献,HTTP/1.1指出W e b 浏览器使用的HTTP版本。(3)应答:Web浏览器提交请求后,通过HTTP协议传送给We b 服务器。Web服务器接到后,进行事务解决,解决结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。为 了 告 知 Web浏览器
14、传送内容的类型,Web服务器一方面传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTT P 体信息之间用一个空行分开。(4)关闭连接:当应答结束后,Web浏览器与W eb服务器必须断开,以保证其它Web浏览器可以与Web服务器建立连接。5实验心得Ja v a 中实现多线程有两种途径:继承Th r e a d 类或者实现Runn a b le 接口。此处使用了接口的方式生成线程,由于接口可以实现多继承,况且Runnable只有一个ru n 方法,很适合继承。在使用Th r e a d 的时候只需继承T hread,并且new一个实例出来,调 用 s t a r t
15、()方法即可以启动一个线程。在本次实验中,通过用j a v a 语言开发一个多线程的web服务器,能并行服务于多个请求,来掌握套接字编程技术,了解并运用h t t p 协议的作用原理,实现多线程w eb服务器设计。6参考文献:,1计算机网络:自顶向下方法(原书第4版)/(美)库罗斯(Kurose,J.F.)等著;陈鸣译一北京:机械工业出版社,2 023.122java从入门到精通:李钟尉,马文强,陈丹丹 等编著;一 清华大学出版社,202 3.93实验指导书邮件客户机1实验目的:。为发送者提供一个图形界面,其中包含:发送电子邮件地址、接受者电子邮件地址、邮件主题和自身。开发一个In tern
16、e t上的使用S T M P协议的网络服务器的邮件客户端,在Wi n d o w s X P,W indow s7系统下,使用J AVA语言开发,并最终运营该程序。2实验部分代码及截图:在发件人框中填写相应的信息,点击发送按钮即可向目的邮箱发送邮件。 X作 业2:邮件客户机1025671623你0 !这是T询 试 斜*删除解件4 1/5 提示I区信息已成功发送!确定publ i c class Ma i IMes s a g e publ i c s t a t ic v oid m a in (S tr i ng args)。E v e ntQueu e.invokeLa t er(n e
17、w Run n ab le()pu b li c v oi d r un()tr y(。Send F rame frame=new SendFrame();Mfr a me.s e tVis i b 1 e(true);e。catch(Exc e ption e)。g e.printS t ackTra c e();/*。*Create th e f r ame.0 */pub 1 ic Se n d Frame()e t h i s Fram e=t h is;gse t T i tl e(n Ja v a M a il c lie n t );s etDefault C 1 o seOpe
18、r a t i o n(JF r a m e ,EXI T _ON_CLOSE);setB o un d s(100,100,4 5 0,328);c on t e n t Pane=new J Pane 1 ();“c o n te ntP a ne.s e tBo r der(n e w Emp t y Border(5,5,5,5);setCo n te n t P a n e(c o n t ent P ane);con t en t Pane.setL a y out(n ull);。J L abel IblFrom=new JLabel(ufrom:*);oolblFrom.s e
19、 tBounds(1 0,1 0,54,22);c o nt e ntPan e.add(lblF r om);0gJLab e 1 IblTo=new JLabel(n T o:);o 1 bl T o.setB o u n d s(l 0,4 2,4 2,22);con t entP a ne.add(I b lT o);s J Labe 1 lb 1 Subject=n e w J Lab e 1 (H S ub j ec t:);4 b IS u bjec t.s etB o und s(1 0,74,54,2 2);oocontentP a n e.a dd(lblS u b j e
20、ct);bt xt_ F r om=new J TextField();8tx t _Fr o m.se t E d i t abl e(f a 1 s e);F ro m.setText(,H,);txt_From.setB o u nd s(49,11,38 3,21);content P ane.add(txt_F r o m);。tx t _From.s etC olum n s(1 0);“xt_To=n e w JTex t F i e ld();t xt_To.s e t T ex t(n);o tx t _To.s e tColumn s(1 0);。t xt_To.s e t
21、 Bounds(4 9,4 2,383,21);c o nten t Pane,a dd(t x t _To);g t e xt_Subject=new JT e xtFie 1 d();o t e xt_Subj e ct.setText(作业 2:邮件客户机)4 e x t _Sub j ect.setColumns(1 0);text_ Subj e ct.se t Bou n ds(66,73,3 66,21);contentPa n e.a dd(tex t _S ubject);0。J L abel IblMassage=new JL a bel(n M a s s age:1);
22、lblMass a ge.setBo u nd s(10,1 01,6 4,15);contentP a ne.a d d(IblMass a g e);0000gj B utton btnQu i t=new JBu t t on(Q u it);ab t nQuit.a d d Act i o nL i st e n e r(new Ac t io n Lis t ener()叩 u b lie vo i d actio n Perfo r med(A ct i on E vent e)。4hisF r ame.d i spo s e();00 0);btnQ u i t.s e tBou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 计算机网络 原理 实验 报告
限制150内