java socket、线程及rmi开发框架


第21卷第12期2001年12月计算机应用C讲nputerAppKcadons文章编号:1001—9081(2001)12~0075—02javaSocket、线程及RMI开发框架V01.21.No.12Dec..2001徐迎晓1·2(1.上海大学网络中心,上海姗2;2.复旦大学计算机科学与工程系,上海200433)摘要:结合J“aS0cket和线程机制开发各种网上服务的基本框架,给出了在此框架下实现基本的w幽、smP、代理等常见服务的实例。同时给出Javasocke£和RMI集成的开发框架。关键词:Jm;Soc咄RMI;Web;smP;P工Dxy中图分类号:1P393文献标识码:AJ耵a语言作为网络编程语言和开发环境,也提供了对s。ck时的支持。S。ck眦成为Java开发网络应用的有力工具。多线程机制是J盯a的重要特点之一,由于多段代码可以并行运行,同时又可以根据需要共享内存和数据,使得它成为应用服务程序处理并发请求的主要方式。R_Ⅷ提供了远程方法调用机制,在应用服务程序中可以用它将复杂的任务转交给高性能的服务器执行,从而实现分布式的应用,并提高执行的效率。车文给出了结合Javasocket和线程机制开发各种网上服务的基本框架,并给出了在此框架下实现基本的web、SMIP、代理等常见服务的实例。同时研究了JavasDd出和RⅧ的集丧:1JavaS0cket和线程机制相结合的框架J啪语言的socket类提供了seners∞ket类和socket类用于服务器端的sDc虹编程。服务器程序编写步骤如下:(1)创建s州ersocket对象洒目so矗d∞=news州dso止d(端口号).(2)等待客户机程序连接md⋯日c。口t(J,通过油ersocket对象的accept()方法可以接收客户机程字的连接请求,其返回值是一个socket类型的对象。程序运行到这里将处于等待状态。(3)生成输入输出流PIi出哑n叫t=ⅡcwPI出ne衄【B斟呻岛h暇m()),&Ⅲh甜R∞d叮缸⋯R血∞dR曲妇{rl删岫州h眦nRe日d盯(g,鲥1r唧6乜eamII)】:通过靶M6)cket对象的酣h中皿s吐锄()和萨:‘州s廿瑚,()方法可以分别获得输出、输人流。(4)处理输入输出流通过输人流可以读取客户机程序发来的信息,通过输出流可以向客户机程序发信息。这里所要考虑的是何时读取信包以及何时发送信息。和线程集成时.(1)(2)可以放在主程序的循环中,反复接收各个用户的连接请求,(3)(4)可以交给线程处理。Ja他的线程由三部分组成:线程处理的数据、执行的代码和cPLJ时间。线程主要针对soc蛔操作,其执行的代码包括前面(3)(4)步操作,因此定义处理类如下:da昭P1唧iⅡ柚一hRuⅡ兀止deIsockd日:pu址cPI∞e∞(sLtkdH1){⋯1:)Pmkvoidnm()I竹【PrirItsh一胛t=n州Pr血S口e锄(8酣ou肇岱Ⅱe衄”);B证kmdR∞d叮m。rL洲B珀h甜Ite日d盯(rl州h甲“舀h哟埘R删】凹(日.蚪hp凸mm()”;//各种处理流程椰td呻e().s.do日c();irIdo虻();衄tdl(IOb。q五册e)fsyst邸叫t.州n血(”b∞州∞:”+e):})J主程序中,主要执行(1)(2)步,并创建h惝对象,为其分配cPLI时间.其主要代码如下:删jc“cmdmain(‰%q⋯竹{h岱och㈣s删口so吐d(端口号):Sy吐em.叫皿汕∥s一0■’);whde(扫llc){s0妇㈣”c甲【();nⅡⅫ8pⅧPrwc∞(B);nⅡ∞dt=r㈣1hr∞d(p);tgtanf);Jcmch(&o印b⋯J{sys【哪叫’pjr山(e2应用示例上述框架只要对其处理流程一处作补充,便可实现各种网上应用,使用标准的端口号和协议便可实现常见的网上服务,如web、smP、Proxv等。本文给出了简化的但可实际运行收蓓日期:200l—06—25基金项目:上海市高等学枝科学技术发展基金项H(2000A41)作者简介:徐迎晓(1昕3一),男,江苏淮阴人.讲师,博士研究生,主要研究方向:计算机网络 万方数据 计算机应用的代码。(1)web服务可通过浏览器运行当前目录及其子目录下的各种网页。s口沁inb⋯r口mm();$km嘎It呻山(”r”蚪“+lm);叫pnnt】Il(”m1Ⅳl02000科);Ⅻpm“(“Ⅷ札v目dm:1∽;“pm吐nL“c∞t口L唧c:tⅢ/}【砌”);//浏览器请求形如cEr/v1.h向}rnⅣl1//叫.q正为第一次和第二欢出现空格的位置,//衄恤从测虹器请求中提取出文件路径和名称,如∥l}·州n甲1=i口foⅫ砌(“).“∞2=imimcIof(~.甲1+1);s口咄m—m=i面,日蛔is(甲1+2,叩2);//若浏览器请求中无文件名.则加上默认文件名砌咀h蛐l迁{£l一嘲u出(”)¨盟曲蛐.d出弼由(“,))皿∞∽“ind“.bⅡr:sy岫n叫皿吐h(”蛐“+日d一);//向浏览器发送文件陆E=一nk(6I—Ⅸ):岫xIts口e呦白=n洲nl娜】ts咖(6);mtn=白awjlable():哑叫】=nw畹【1圳;Ⅲ叫nilr∥c哪t衄Lk蛐:“+n):叫‘p血h(”);讪址l(n=血f唧d(b面、)>=O){Ⅻ.“kfⅪ.O,n);(2)smP服务可通过ou‰k等发邮件的程序发送邮件.邮件存放在程序所在目录中.并可通过鼠标双击打开。眦1埘n血、恤wd。叩噼佃吐∞smP—一);印n㈣‘pTi血I(m.m出∞());咖p血tlllI“250ple聃cwd协m鲥岬”);sy咖om呻】王ln“n庀缸【缸()J;Ⅻ埘mh(。250s∞j口“’).sy日tdD叫t州nnn(m弛8du肿());“P”h(㈣R∞miⅢw),syFt唧。呲严irItl玎(血咒甜L妇());Ⅻ.舢(“354嘶mn,“Ⅱ№、“.\“m&1imby1b出”):6lcrmme++胁舀he皿m曲m=newPri|l晤瞰蚰十。咖l“JJ.h凹舀hc衄gHoh训口pensm啪(hn=日。“na讪曲k():帆Ⅺ{】=Ⅻ呱[1024】;(呲pdn妇(“c咖苣ILk啦l:“+n);∞t州rnk(”}f兀1y1020D0r):叫prirItln(”ⅧⅫLv口i∞:1∥),“E“tlTl(“c嘎】tmType:k∥}md““p“l“(”∞lhLk曲:”十n);呻t.whl山l(⋯);删e((n=咖.一(㈦I>=0)outwnk(“,0.Ⅱ);}2001年3与砌Ⅱ的集成Java的R^Ⅱ技术使得在一台计算机上的Java程序可以远程执行另外一台计算机上的对象的方法。执行结果可以通过方法的参数返回给Java程序。它涉及到两方面的程序:服务器程序和客户机程序。服务器程序创建一系列的对象,并向R.Ⅷ注册服务器注册,等待客户机来执行。而客户机程序获取服务器上对象的引用,然后远程调用其方法。这些方法将在服务器程序所在机器上执行,方法的参数返回给客户机程序。ha姚程序和R砸集成后可以将复杂的处理任务交给RⅦ服务器,同时利用Ja糟的动态代码调用机制,可以实现代码的动态扩充,使得服务器的伸缩性和扩展性更好。其结构如下:socke【服务器?ii≤矗.::.i,Xj哥磊RMl服努器创建安生管刚揣+●等待客,J饥程序连接t刮建Ⅳ启动线崔—+线狴生成输^输出流’短尔处理仆务+一址理输入输出汛uJRMI服并辨查iq远程甜纽创迎远挂对象『却R~Il帷,}皓}L册远程时糠接收socke【服务器的远程执行请求+执行e“JIcri妇《实现11、㈨¨¨。cc接u)”““呐6‰(m“一4结语Wh山川fⅡ_m∞。丑he())qu山(”.“)){丘lc舳埘mk(H1,SFtc∞ompnndn(nI,Ⅲl呻血L伽M“w8。科odkddiv口,);却曲邪删t.埘I山(血碑ⅢⅡ血”());“P。“l位1”山曲∞d∞沁—“甜(3)Pm可服务s咄i面=mm8dLim();哥她删‘pIi皿叭。rla”删”十i—i】;lr吐口1=i女hIⅡ0f(~);皿耳已=i也hk棚f(~.甲1+1);铀诅g印td=曲-即b甘矗llg(叩1.8p2);svn∞.Ⅲ‘pr曲(’now∞lm咖“+鲥砌);u也㈣U也(斟L啦i);本文提出的框架可以有效地编制各种网络应用程序,同时本文提出的sod呲和R~Ⅱ结合的方案可以有效地提高网络应用的可扩展性以及执行性能。参考文献【1】徐迎晓.J邮语言的so吐d编程IJl.}—卓机与通信.1997.(1)【2l刘奕,孙翱,何禺文基于s呲k吼的枷语言网络通信机制和程序设计【J】.计算机应用研究,1999.(51【3】吴建军.{鲁迎晓.等Appl∥酬“R加结构的计费系统【J】计算机工程.2000,26(增刊),【4】s.McPhem血.Javas哪l出皿ds凹idi血叽w油}岫IEB/0L]htIp://d利0P时J“吼衄.c州d甜ap∥t枷出A而d“舢拙∥.0nd)旨1999【51u划一咖[EB/oLl脚://j㈣㈣/汹/姒B/血I耐a-’Ⅲ二倒%.hd一一象h务对盯任纛靠执艚生 万方数据
还剩1页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

ly853602

贡献于2017-12-19

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf