




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AdvancedNetworkProgramming,RenJiansirenjsv,NetworkingBasics,ApplicationsLayerStandardappsHTTPFTPTelnetUserappsTransportLayerTCPUDPProgrammingInterface:SocketsNetworkLayerIPLinkLayerDevicedrivers,TCP/IPStack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(devicedriver,.),NetworkingBasics,TCP(TransportControlProtocol)isaconnection-orientedprotocolthatprovidesareliableflowofdatabetweentwocomputers.Exampleapplications:HTTPFTPTelnet,TCP/IPStack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(devicedriver,.),NetworkingBasics,UDP(UserDatagramProtocol)isaprotocolthatsendsindependentpacketsofdata,calleddatagrams,fromonecomputertoanotherwithnoguaranteesaboutarrival.Exampleapplications:ClockserverPing,TCP/IPStack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(devicedriver,.),Java基本网络类,本章介绍了Java基本的网络类(InetAddress、URL、URLConnection和Socket)的使用,介绍如何利用Socket通信机制实现客户/服务器方式的一对一的通信,实现浏览器/服务器方式的网络聊天。,1Java网络进程通信概述网络编程一般指利用不同层次的通信协议提供的接口实现网络进程安全通信和应用的编程。网络进程就是网点机(连入网络的计算机)上运行的程序。网络进程在通信协议中用端口标识(port),它驻留的网点机用其IP地址或域名来标识。网络进程同步通信是指通信的发起者向接收者发出服务请求后,必须得到对方回应,才继续运行。如果通信的发起者向接收者发出服务请求后,可以继续运行,需要时再获取接收者的响应,这叫异步通信。,网络协议工程就是利用软件工程的方法(分层次、分模块等技术)来解决复杂网络进程通信的问题。网络进程往往按照应用的需要,采用不同层次的协议进行通信。2Java网络基本类2.1InetAddress类InetAddress类用来描述Internet地址。1.获取本机的IP地址例1用InetAddress类获取本机的IP地址。.*;importjava.io.*;,publicclassGetLocalHostpublicstaticvoidmain(Stringarg)InetAddressmyIp=null;trymyIp=InetAddress.getLocalHost();catch(UnknownHostExceptione)System.out.println(myIp);2.根据域名获得IP地址例2根据域名自动到DNS上查找IP地址。,.*;importjava.io.*;publicclassGetIPpublicstaticvoidmain(Stringargs)InetAddresscug=null;trycug=InetAddress.getByName();catch(UnknownHostExceptione)System.out.println(cug);,getByName(),publicstaticInetAddressgetByName(Stringhost)throwsUnknownHostExceptionInetAddressutopia,duke;tryutopia=InetAddress.getByName();duke=InetAddress.getByName(2);catch(UnknownHostExceptione)System.err.println(e);,2.2URL类URL(UniformResourceLocator)是WWW资源统一资源定位器的简写,它规范了WWW资源网络定位地址的表示方法。WWW资源包括Web页、文本文件、图形文件、声频片段等。1.URL类简介URL类定义了WWW资源的特征及读其内容的方法。其基本表示格式:protocol:/hostname:/resourcename#anchor其中,protocol:使用的协议,它可以是http,ftp,news,telnet等;,hostname:主机名,指定域名服务器(DNS)能访问到的WWW服务的计算机,如:;port:端口号,是可选的,表示所连的端口号,如默认,将连接到协议默认的端口。resourcename:资源名,是主机上能访问到的目录或文件;anchor:标记,也是可选的,它指定文件内的有特定标记的位置。URL例子:(1)/demoweb/url-primer.htm,(2):8080/demoweb/url-primer.htm(3)ftp:/local/demo/information#myinfo(4)file:/local/demo/readme.txt第(2)个URL把标准Web服务器端口80指定为8080端口,第(3)个URL加上符号“#”,用于指定在文件information中标记为myinfo的部分。2.URL类对象URL类的构造方法有如下四种。(1)URL(URLabsoluteURL)例:URLmyUni=URL(“,(2)URL(URLurl,StringrelativeURL)例:URLmyUni=URL(“,例:URLmyUni=URL(“http”,”,80,”/mydoc.html”);等价于:URLmyUni=URL(“http:/:80/mydoc.html”);3.URL类获取其特征的主要方法StringgetProtocol();返回URL的协议名。StringgetHost();返回URL的主机名。IntgetPort();返回URL的端口号,如果没有设置端口号返回值为1)。StringgetFile();返回URL的文件名及路径。StringgetRef();返回URL的标记。,4.用URL获取网上HTML文件分为三步:(1)构造URL的对象:url=newURL(“”);(2)将DataInputStream类对象与url的openStrean()流对象绑定:DataInputStreamdin=newDataInputStream(url.openStrean()(3)利用din读HTML文件。,例3用URL获取网络上资源的HTML文件:,.*;importjava.io.*;publicclassReadURLstaticpublicvoidmain(Stringargs)tryURLurl=newURL(args0);DataInputStreamdin=newDataInputStream(url.openStream();StringinputLine;while(inputLine=din.readLine()!=null),System.out.println(inputLine);din.close();catch(MalformedURLExceptionme)catch(IOExceptionioe)运行下列dos命令:javaReadURL就可以看到中国地质大学主页的HTML文件。,5.用URL获取文本和图像文本数据源可以是网上或者本机上的任何文本文件。如果要用URL来获取图像数据,要使用方法getImage(URL)。这个方法会立即生成一个Image对象,并返回程序对象的引用,但这并不意味着图像文件的数据已经读到了内存之中,而是系统与此同时产生一个线程去读取图像文件的数据。因此,就可能存在程序已经执行到了getImage()后面的语句部分,而系统还正在读图像文件数据的情形。例4用URL来获取文本文件(.txt)和图像文件(.jpeg,.gif)。,.*;importjava.awt.*;importjava.io.*;publicclassGetDataByURLextendsFrameMenuBarmenuBar;booleandrawImage=false;DataInputStreamdataInputStream;inti=0;Stringline_str;booleanfirst=true;Fontfont;,publicGetDataByURL()menuBar=newMenuBar();setMenuBar(menuBar);Menudisplay=newMenu(display);menuBar.add(display);MenuItembeauty_display=newMenuItem(displaybeauty);MenuItemtext_display=newMenuItem(displaytext);display.add(beauty_display);display.add(text_display);setBackground(Color.white);,font=newFont(System,Font.BOLD,20);setTitle(sample:useURLgetdata);resize(400,300);show();publicbooleanaction(Eventevt,Objectwhat)if(evt.targetinstanceofMenuItem)Stringmessage=(String)what;if(message=displaybeauty)drawImage=true;doDrawImage();,elsedrawImage=false;first=true;if(message=displaytext)doWrite(file:/d:/plbackup/tt.txt);returntrue;,publicbooleanhandleEvent(Eventevt)switch(evt.id)caseEvent.WINDOW_DESTROY:dispose();System.exit(0);default:returnsuper.handleEvent(evt);staticpublicvoidmain(Stringargs)newGetDataByURL();,publicvoidpaint(Graphicsg)if(drawImage)tryURLimage_URL=newURL(file:/D:/plbackup/zy4.jpeg);Toolkitobject_Toolkit=Toolkit.getDefaultToolkit();Imageobject_Image=object_Toolkit.getImage(image_URL);g.setColor(Color.white);g.fillRect(0,0,300,400);,g.drawImage(object_Image,40,80,160,200,this);catch(MalformedURLExceptione)elseif(first)first=false;g.setColor(Color.white);g.fillRect(0,0,400,300);,g.setFont(font);if(line_str!=null)g.drawString(line_str,10,i*20);i+;privatevoiddoDrawImage()drawImage=true;repaint();,privatevoiddoWrite(Stringurl_str)tryURLurl=newURL(url_str);dataInputStream=newDataInputStream(url.openStream();tryi=1;line_str=dataInputStream.readLine();while(line_str!=null),paint(getGraphics();line_str=dataInputStream.readLine();catch(IOExceptione)dataInputStream.close();catch(MalformedURLExceptionel)catch(IOExceptione2),2.3URLConnection()类URL类仅提供读取地址为URL的Web服务器内容的方法。如果不仅要读取其内容,而且要向URL对象发送服务请求及参数,那么必须要使用URLConnection()类。利用URL类提供的openConnection()方法,可以建立一个URLConnection类对象。然后,可以使用这个URLConnection类对象绑定的数据输入流读URL的内容,使用这个URLConnection类对象绑定的数据输出流发送服务请求及参数。URLConnection类是一个以http为中心的类,同时支持get和post两种方法,默认情况下为post方法。URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接。,1.读取URL对象内容例5利用URLConnection类获取网络上的HTML文件。.*;importjava.io.*;publicclassReadURLConnectionstaticpublicvoidmain(Stringargs)tryURLcumtURL=newURL(,URLConnectioncumtConnection=cumtURL.openConnection();DataInputStreamdin=NewDataInputStream(cumtConnection.getInputStream();StringinputLine;while(inputLine=din.readLine()!=null)System.out.println(inputLine);din.close();catch(MalformedURLExceptionme)catch(IOExceptionioe),2.与URL对象交互利用URLConnection类对象向URL对象发送服务请求及参数,这里以Java程序与服务器端的CGI(CommenGatewayInterface,公共网关)交互为例,具体实现步骤如下。(1)创建URL(包括CGI文件名)对象。(2)打开一个到该URL的连接,建立相应的URLConnection对象。(3)从URLConnection对象获取其绑定的输出流。这个输出流就是连接到服务器上CGI的标准输入流(stdin)。(4)向这个输出流中写数据,并关闭这个输出流.,(5)从URLConnection对象获取其绑定的输入流。这个输入流就是连接到服务器上CGI的标准输出流(stdout);从这个输入流中读服务结果。关闭这个输入流。例6通过URLConnection对象运行上一个叫backwards的CGI,backwards将其反转后写到标准输出。这个CGI需要下面这种格式的输入string=string_to_reverse,这里string_to_reverse参数就是要反转的字符串。CGIbackwards可执行文件从标准输入读取字符串,将其转换成大写字符串写到标准输出。这种标准输入格式为:“string=string_to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东深圳大学人文学院谢晓霞教授博士后招聘1人考前自测高频考点模拟试题及完整答案详解
- 2025年宿州学院专职辅导员公开招聘12人考前自测高频考点模拟试题及答案详解(必刷)
- 滑雪场专业知识培训总结课件
- DB11∕T 1165.9-2019 收费公路联网收费系统 第9部分:应用软件技术要求
- 滑雪健将课件
- 中国光伏汇流箱行业投资分析、市场运行态势、未来前景预测报告(智研咨询)
- 2025年中国管网特殊空间机器人行业市场运行态势、进出口贸易及发展趋势预测报告
- 痛经科普课件
- 2025年4月山东中医药大学附属医院合同制人员招聘113人考前自测高频考点模拟试题及答案详解参考
- 祖先的摇篮陆虹课件
- 暴雨过后工地复工复产方案
- 物业项目开办物资明细表(参考)
- TNBSIA 001-2024 建筑设备一体化管控平台建设技术要求
- DL-T-5161.5-2018电气装置安装工程质量检验及评定规程第5部分:电缆线路施工质量检验
- JT-T-848-2013公路用复合隔离栅立柱
- 《客舱安全与应急处置》-课件:其他辅助设备
- 工厂搬家方案
- chap5-高性能混凝土的性能-物理力学性能
- 县河长制方案
- 基于韧性原则的乡村低密度住宅规划体系构建
- 综合实践《中华传统节日》课件
评论
0/150
提交评论