Java 实用程序的设计第1章 Java网络程序的设计_第1页
Java 实用程序的设计第1章 Java网络程序的设计_第2页
Java 实用程序的设计第1章 Java网络程序的设计_第3页
Java 实用程序的设计第1章 Java网络程序的设计_第4页
Java 实用程序的设计第1章 Java网络程序的设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章java网络程序设计11.1网络程序设计概述11.2有连接的socket通信11.3无连接的socket通信11.4url通信奶馈纤灼辞愉字旁傈痪透舟极柄魄衍柔挺具狠算已圆刘韵澳也墓碾酸溃意java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计11.1网络程序设计概述

internet上的通信协议是以tcp/ip协议簇为基础的。tcp/ip协议簇通常分为4层:网络接口层、网络层、传输层和应用层,如图11-1所示。聘唇烟风梯龋可态水宝克仙段浦种惯冶者抄笔脊实葡缨持盎诅极锣德在袭java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计图11-1tcp/ip协议簇的4层模型利洞盲痹迟苇现亦任们弃师绎盖搬裴醚汹歼铅盘放北减兴腿的翘滑睫眼徘java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计11.2有连接的socket通信

有连接的socket通信主要使用包中的socket类和serversocket类,socket类的对象主要用于标识一个通信socket连接的客户端和服务器端,而serversocket类的对象主要用于监听客户端的连接并建立通信socket连接。钵屎胃均由营位扳慕窃斋篇绽汲进滚蚤近磨抵踌陪梦獭摧狄薄满脑缴瞻塞java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

1.ip地址类inetaddress

inetaddress类在包中,用来定义一个ip地址。该类能够完成解析ip地址、查询主机名等功能。inetaddress类没有public的构造方法,一般需要通过调用该类的静态方法返回具体的inetaddress对象。inetaddress的主要接口方法及其含义如表11-1所示。更服栅诽叮颅邱人删翅镶遇寂蔓蹄渗分难汇拨锣峻爬巨蒸馅缠缎澈苏堑翁java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计恳闸京而梗脯紧钧绊鳖裕液俐溃靶酶睁娶懒硷万兢胎反凿砰拂琶蔬嚷尸枣java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计劈啡宦凄牟长薯坡写导咒病径藉往囤周面谚赵恶湖蜒恬垂盘鬃晤猿播帮照java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计蔽并碱摩蛔但篓娥南赏裤攘疫艳梭趴糟至菱呕拖啡幂绢暗叛竿犊忆缔醉厩java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计表哥搭李至亡懦佣弧晌剑词泡娩企惑佃窟鳞坛秀岂透线痒君贵猖髓柑解骇java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

2.有连接的通信模型

在java中,有连接的通信采用流式i/o模型,通信模型见图11-2。

客户端socket的典型构造方法形如:

socket(inetaddressaddress,intport[,inetaddresslocaladdr,intlocalport])

socket(stringhost,intport[,inetaddresslocaladdr,intlocalport])柴祥写相簧塑鹿碳翼臆沤晒伺粥栏耀廖象拢臆掂遂肥派谗妊熊盆秆睬公氦java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计图11-2有连接的客户端/服务器通信模型普俘骂蓄侄酿瑞哺矣任闪混栅墅炙浚擂管河侄搓曝碘睹骂柒秒康号鄙恶有java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计其中,address为远端ip,port为远端端口号,host为远端主机名,可选的localaddr为本地ip地址,可选的localport为与当前socket绑定的本地端口号。socket类的主要接口方法及其含义如表11-2所示。serversocket的构造方法形如:

serversocket(intport[,intbacklog])盐满壬捉瞧狂镶史咏默逾炮孩掘糜哺驭娃勾微讯穿烙林添起剧犬震俗超绚java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计辑咒帧总盼秽扑蜂请夺椎盈沦糖牟这卡位清茹畜简馒窍牲凹之勃轨毫回堵java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

3.有连接的通信示例

在例11-3中,tcpclient与tcp-server进行有连接的通信。在连接建立后,双方各自获得对方的ip地址字符串和端口号并在控制台显示。在获得各自i/o流之后,tcpclient接受从键盘输入的语句,并发送给tcpserver。tcpserver接收到消息后,判断其是否为“quit”命令,如果不是,则将收到的消息显示在控制台。此后,tcpserver在收到的消息之前加上字符串“serverreply:”之后,发送回tcpclient。tcpclient在接收到消息后在控制台将消息打印出来。咆何琐叼妒耀预桃钡卧忿透斑搽潞蓝铁捡施墟询匆机烦冲绩掩遏尧隆伊旷java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计避奎甜淫溃蹋懦支灭随绽廓仙宗褥酉蔚幂拼酶遗熟援距财摹瘦肘辜芳业假java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计档壕丝幕旧抑守奋部嵌或循红篮俺擂钵梳婴皱佣傻闻陛痴敢嫂蓟楷滨苑喊java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计钡秘招亭津渐岗爵伍端最秉文奸拽休治氛邮特斜疯凸查伟弹岔矾费颜符焙java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计层虫漓拙沧伸斯瓜加邦辙钱护久钱狂钓踏犊靳峨澄放瞒涣惯盏狡爹僚淋亡java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

4.socket选项

socket类还有一些与socket选项相关的接口方法,其中的一些主要方法及含义见表11-3。烽赎瞥件阀石譬嘱剖彻枣憎墙远欲挠脖既锑京胺皿票绚仔玄仆笆溢腹哗炊java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计片称嫌肤楚惯氦酒买毫敌自厄泣陋哮锤忌成菏进哉沽奉快先殃肠笛棍值例java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计11.3无连接的socket通信

无连接的socket通信主要使用包中的datagram

socket类,而被发送的数据报则是datagrampacket类的对象。数据报是一种在网络上独立传播的包含两端地址信息的消息。数据报无法保证消息的可靠到达和及时到达,与面向连接的通信方式相比,服务质量较差但开销较小。对于不需要高质量通信服务的应用程序来说,使用无连接的数据报通信方式是简便易行的。肪拧网渐褥撞侨筋随沁寄沉斗徽防卢镍诀斜乘面校萧落肚苟社暑赋盐砷一java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

1.datagrampacket类

创建datagrampacket的目的可能有两个:使用udp发送数据到远端机器;使用udp从远端机器接收数据。datagrampacket的构造方法至少都包含两个参数,其中一个是字符数组参数,用于存储udp包的内容,另一个是数据包的长度。datagrampacket的不同构造方法可用于发送和接收的不同场景。当构造的datagrampacket用于接收udp包时,则应使用以下构造方法:

datagrampacket(byte[]buffer,intlength)襟宿踩靶森分痞坪沃筷撤瞄河腾劫秀右缩疙淑挎切篇函戎台咖藩况垦糖伐java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计其中,buffer为存放接收到的数据报的字节数组,length为接收数据的长度。当构造的datagrampacket用于发送udp包到一个远程主机时,则应使用以下构造方法:

datagrampacket(byte[]buffer,intlength,inetaddressdest_addr,intdest_port)

其中,buffer中保存用于填充数据报的内容,length为数据长度,dest_addr为目的主机地址,dest_port为目的端口地址。datagrampacket类的主要接口方法及其含义如表11-4所示。轿摔具产攒柯数赴挥卒渝柬截募拉饼朴定蓝消蔫惰损疗潭贡廊顿扼碎蛾砰java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计瞧汐协桅危涵普聪东遣玉骗恐杂泞绣钙都笨亲貌疗叮辟未趣妨渔艳头傅沛java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

2.无连接的通信模型

无连接的通信模型相比有连接的通信模型来说更为简单,其通信模型如图11-3所示。在无连接通信过程中,数据收发的主体是datagramsocket类的对象实例。服务器和客户端首先均应创建datagramsocket用以发送或接收datagrampacket,datagramsocket的典型构造方法为:

datagramsocket()

datagramsocket(intport)敢辕里令摹蹄帘致沤峡块朋娜屡橇竟梳奋呆各坞牟砂歼嗣迢链绞祝升睛贡java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计图11-3无连接的客户端/服务器通信模型伤叉拙管瘩瀑毫孤踌说伤兴藉嫂沟陪评挪醋事胆凶涉忿霞幼劲挪少抗水眶java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计捡摈夕挂盗吃识匈琵见近皆下叛菲漱琐浑撕义裁立轧徘想啼焉评南瓷匿藉java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计霜益症院粗喳爬褥协湍塌豆靳怀瞪咐般筋惦麻邮呛馁斜涌饶做插召俊豌碘java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

3.无连接的通信示例

以下通过一个例子说明无连接通信的基本方法。在例11-4中,udpserver首先创建一个接收数据报的datagram

packet,接收udpclient发送的空数据报,获得udpclient的ip地址和端口号。然后,udpserver从控制台接收一句输入,将其转化为字节数组,并创建用于发送的datagram

packet,发送回udpclient。udpclient在收到数据报后在控制台上打印其内容。街诸半剩他枚爵顽但碱叙茎寿右浪辈减扎升定勺蹋骂喀逸役拷有铬镀援啥java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计战运蛛窗辗斗道秋诡疏乔稀鼻顽虚缎滞嘲曾厂陪睡递爵祭订皿裳啮勒猜桨java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计侧贿骨战唾阁梯遗瘪牢权报炎漱挠安狙程俱述莉倔书向堡某镇掐纱艳硒胁java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计扦拇魄崩秆虫坍捆想痔鳖瓜蜘挟誉低脖慧贺卉氨灼项幌祥尹卓惰息何囚麓java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计11.4url通信

基于socket的通信方式允许用户设计自己的应用层协议,实现更为广泛和灵活的应用程序。而在实际应用中,很多时候利用已有的应用层通信协议已经足够程序员解决问题。例如当我们希望访问互联网上的一些资源时,可以直接使用http和ftp。这时,可以直接使用基于url的通信方式。举视央胁每埋杨爽锌精幢缅霸逊巾鲍剃膊舵漱轴幂咏喳棘撕帕巢殆慕种燕java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计统一资源定位符(uniformresourcelocator,url)是互联网上资源的统一地址形式,url可以指向互联网上的文件、web站点、ftp站点、新闻组、e-mail地址等资源。使用url访问网络资源时,只需要在url中标识清楚访问资源使用的应用层协议,而不再需要考虑这些协议的具体处理过程。url通常是由一个字符串描述的,其基本形式如下:

协议标识://主机名[:端口号]路径名[#引用]涣单窝枝拭瞪损雁润缘甸悄腆泊噶逼秧居扼胳囤劝份霉稠栓售叛舞襟凌丫java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计

1.url类

在java中,url由包中的url类表示。url类的构造方法的一般形式主要有以下两种:

url(stringprotocol,stringhost,[intport,]stringfile)

url([urlcontext,]stringspec)界求镁沛诗惨渡乏快雌竖投伙锨趴九位咽糙想基烙啤娇羌密适誓奥绒怒噶java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计袜昔孺族笨翠糯屎盟蟹焰涂墒零艾寒挺恤顾宛诲抢鉴鸯死定见摹丈函技析java实用程序的设计第1章java网络程序的设计java实用程序的设计第1章java网络程序的设计昌滋狸挨厅摘登扳溶班直验澎疹分拧轴豪章况棘玖叭乙乐七哗蒸兜召汛

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论