版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Advanced Network ProgrammingRen JiansirenjsvAdvanced Network ProgrammingReNetworking BasicsApplications LayerStandard appsHTTPFTPTelnetUser appsTransport LayerTCPUDPProgramming Interface:SocketsNetwork LayerIPLink LayerDevice driversTCP/IP StackApplication(http,ftp,telnet,)Transport(TCP, UDP,.)Netwo
2、rk(IP,.)Link(device driver,.)Networking BasicsApplications Networking BasicsTCP (Transport Control Protocol) is a connection-oriented protocol that provides a reliable flow of data between two computers.Example applications:HTTPFTPTelnetTCP/IP StackApplication(http,ftp,telnet,)Transport(TCP, UDP,.)N
3、etwork(IP,.)Link(device driver,.)Networking BasicsTCP (TransporNetworking BasicsUDP (User Datagram Protocol) is a protocol that sends independent packets of data, called datagrams, from one computer to another with no guarantees about arrival. Example applications:Clock serverPingTCP/IP StackApplica
4、tion(http,ftp,telnet,)Transport(TCP, UDP,.)Network(IP,.)Link(device driver,.)Networking BasicsUDP (User DatJava基本网络类本章介绍了Java基本的网络类(InetAddress、URL、URLConnection和Socket)的使用,介绍如何利用Socket通信机制实现客户/服务器方式的一对一的通信,实现浏览器/服务器方式的网络聊天。Java基本网络类本章介绍了Java基本的网络类(InetA1 Java网络进程通信概述 网络编程一般指利用不同层次的通信协议提供的接口实现网络进程安全
5、通信和应用的编程。 网络进程就是网点机(连入网络的计算机)上运行的程序。网络进程在通信协议中用端口标识(port),它驻留的网点机用其IP地址或域名来标识。 网络进程同步通信是指通信的发起者向接收者发出服务请求后,必须得到对方回应,才继续运行。如果通信的发起者向接收者发出服务请求后,可以继续运行,需要时再获取接收者的响应,这叫异步通信。1 Java网络进程通信概述 网络协议工程就是利用软件工程的方法(分层次、分模块等技术)来解决复杂网络进程通信的问题。网络进程往往按照应用的需要,采用不同层次的协议进行通信。2 Java网络基本类2.1 InetAddress类InetAddress类用来描述I
6、nternet地址。1.获取本机的IP地址例1 用InetAddress类获取本机的IP地址。import .*;import java.io.*; 网络协议工程就是利用软件工程的方法(分层public class GetLocalHost public static void main(String arg) InetAddress myIp=null; try myIp=InetAddress.getLocalHost(); catch (UnknownHostException e) System.out.println(myIp); 2.根据域名获得IP地址例2 根据域名自动到DNS上
7、查找IP地址。public class GetLocalHost import .*;import java.io.*;public class GetIP public static void main(String args) InetAddress cug=null; try cug=InetAddress.getByName(); catch (UnknownHostException e) System.out.println(cug); import .*;getByName()public static InetAddress getByName(String host) thr
8、ows UnknownHostExceptionInetAddress utopia, duke;try utopia = InetAddress.getByName(); duke = InetAddress.getByName(2);catch (UnknownHostException e) System.err.println(e); getByName()public static InetA2.2 URL类 URL(Uniform Resource Locator)是WWW资源统一资源定位器的简写,它规范了WWW资源网络定位地址的表示方法。 WWW资源包括Web页、文本文件、图形文
9、件、声频片段等。1. URL类简介 URL类定义了WWW资源的特征及读其内容的方法。其基本表示格式: protocol:/hostname:/resourcename#anchor 其中, protocol:使用的协议,它可以是http,ftp,news,telnet等;2.2 URL类 hostname:主机名,指定域名服务器(DNS)能访问到的WWW服务的计算机,如:; port:端口号,是可选的,表示所连的端口号,如默认,将连接到协议默认的端口。 resourcename:资源名,是主机上能访问到的目录或文件; anchor:标记,也是可选的,它指定文件内的有特定标记的位置。 URL例子
10、: (1)/demoweb/url-primer.htm hostname:主机名,指定域名服务器(DNS)能访问到 (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(URL absoluteURL)例: URL myUni=
11、URL(“/”) (2)(2)URL(URL url ,String relativeURL)例: URL myUni=URL(“/”); URL mydoc=URL(myUni,”mydoc.html”)(3) URL(String protocol,String host,String resourcename )例: URL myUni=URL(“http”,”,”/mydoc.html”); 等价于:URL myUni=URL(“http:/mydoc.html”);(4) URL(String protocol,String host,int port,String resource
12、name ) (2)URL(URL url ,String relativ例: URL myUni=URL(“http”,”,80,”/mydoc.html”); 等价于: URL myUni=URL(“http:/:80/mydoc.html”);3. URL类获取其特征的主要方法 String getProtocol();返回URL的协议名。 String getHost();返回URL的主机名。 Int getPort();返回URL的端口号, 如果没有设置端口号返回值为1)。 String getFile();返回URL的文件名及路径。 String getRef();返回URL的标记
13、。例: URL myUni=URL4. 用URL获取网上HTML文件 分为三步:(1)构造URL的对象: url=new URL(“”);(2) 将DataInputStream类对象与url的 openStrean()流对象绑定: DataInputStream din= new DataInputStream(url.openStrean()(3)利用din 读HTML文件。例3 用URL获取网络上资源的HTML文件:4. 用URL获取网上HTML文件例3 用URL获取网络import .*;import java.io.*;public class ReadURL static publ
14、ic void main(String args) try URL url=new URL(args0);DataInputStream din= new DataInputStream(url.openStream(); String inputLine;while(inputLine=din.readLine()!=null) import .*;System.out.println(inputLine);din.close();catch(MalformedURLException me)catch(IOException ioe)运行下列dos命令:java ReadURL 就可以看到
15、中国地质大学主页的HTML文件。System.out.println(inputLine);5. 用URL获取文本和图像 文本数据源可以是网上或者本机上的任何文本文件。如果要用URL来获取图像数据,要使用方法getImage(URL)。这个方法会立即生成一个Image对象,并返回程序对象的引用,但这并不意味着图像文件的数据已经读到了内存之中,而是系统与此同时产生一个线程去读取图像文件的数据。因此,就可能存在程序已经执行到了getImage()后面的语句部分,而系统还正在读图像文件数据的情形。 例4 用URL来获取文本文件(.txt)和图像文件(.jpeg,.gif)。5. 用URL获取文本和图
16、像import .*;import java.awt.*;import java.io.*;public class GetDataByURL extends FrameMenuBar menuBar;boolean drawImage=false;DataInputStream dataInputStream;int i=0;String line_str;boolean first=true;Font font;import .*;public GetDataByURL () menuBar=new MenuBar();setMenuBar(menuBar);Menu display=ne
17、w Menu(display);menuBar.add(display);MenuItem beauty_display= new MenuItem(display beauty);MenuItem text_display= new MenuItem(display text);display.add(beauty_display);display.add(text_display);setBackground(Color.white);public GetDataByURL () font=new Font(System,Font.BOLD,20);setTitle(sample:use
18、URL get data);resize(400,300);show();public boolean action(Event evt,Object what) if(evt.target instanceof MenuItem) String message=(String)what; if(message=display beauty)drawImage=true; doDrawImage(); font=new Font(System,Font.BOelse drawImage=false; first=true; if(message=display text) doWrite(fi
19、le:/d:/plbackup/tt.txt); return true;else public boolean handleEvent(Event evt) switch(evt.id)case Event.WINDOW_DESTROY: dispose(); System.exit(0); default: return super.handleEvent(evt);static public void main(String args) new GetDataByURL();public boolean handleEvent(Evepublic void paint(Graphics
20、g) if(drawImage) try URL image_URL= new URL(file:/D:/plbackup/zy4.jpeg); Toolkit object_Toolkit= Toolkit.getDefaultToolkit(); Image object_Image= object_Toolkit.getImage(image_URL); g.setColor(Color.white); g.fillRect(0,0,300,400);public void paint(Graphics g) g.drawImage(object_Image,40,80,160,200,
21、this); catch(MalformedURLException e) else if(first)first=false;g.setColor(Color.white);g.fillRect(0,0,400,300);g.drawImage(object_Image,40,80g.setFont(font);if(line_str!=null) g.drawString(line_str,10,i*20);i+;private void doDrawImage() drawImage=true;repaint();g.setFont(font);private void doWrite(
22、String url_str) try URL url=new URL(url_str); dataInputStream= new DataInputStream(url.openStream(); tryi=1;line_str=dataInputStream.readLine();while(line_str!=null) private void doWrite(String ur paint(getGraphics();line_str=dataInputStream.readLine();catch(IOException e)dataInputStream.close();cat
23、ch(MalformedURLException el)catch(IOException e2) paint(getGraphics();2.3 URLConnection()类 URL类仅提供读取地址为URL的Web服务器内容的方法。如果不仅要读取其内容,而且要向URL对象发送服务请求及参数,那么必须要使用URLConnection()类。利用URL类提供的openConnection()方法,可以建立一个URLConnection类对象。然后,可以使用这个URLConnection类对象绑定的数据输入流读URL的内容,使用这个URLConnection类对象绑定的数据输出流发送服务请求及
24、参数。 URLConnection类是一个以http为中心的类,同时支持get和post两种方法,默认情况下为post 方法。 URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接。2.3 URLConnection()类1. 读取URL对象内容例5 利用URLConnection类获取网络上的HTML文件。import .*;import java.io.*;public class ReadURLConnection static public void main(String args) try URL cumtURL= new URL(/);1. 读取U
25、RL对象内容URLConnection cumtConnection= cumtURL.openConnection();DataInputStream din=New DataInputStream (cumtConnection .getInputStream(); String inputLine;while(inputLine=din.readLine()!=null) System.out.println(inputLine); din.close();catch(MalformedURLException me)catch(IOException ioe)URLConnection
26、 cumtConnection=2. 与URL对象交互 利用URLConnection类对象向URL对象发送服务请求及参数,这里以Java程序与服务器端的CGI(Commen Gateway Interface,公共网关)交互为例,具体实现步骤如下。(1)创建URL(包括CGI文件名)对象。(2)打开一个到该URL的连接,建立相应的URLConnection对象。(3)从URLConnection对象获取其绑定的输出流。这个输出流就是连接到服务器上CGI的标准输入流(stdin)。(4)向这个输出流中写数据,并关闭这个输出流.2. 与URL对象交互(5)从URLConnection对象获取其绑
27、定的输入流。这个输入流就是连接到服务器上CGI的标准输出流(stdout);从这个输入流中读服务结果。关闭这个输入流。例6 通过URLConnection对象运行上一个叫backwards的CGI,backwards将其反转后写到标准输出。这个CGI需要下面这种格式的输入string=string_to_reverse,这里string_to_reverse参数就是要反转的字符串。CGI backwards 可执行文件从标准输入读取字符串,将其转换成大写字符串写到标准输出。这种标准输入格式为:“string= string_to_reverse”,这里string_to_reverse 参数就是要转换成大写的字符串,如图2所示。(5)从URLConnection对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年辽宁省葫芦岛市单招职业倾向性测试题库附答案解析
- 2024年广东省韶关市单招职业适应性测试题库附答案解析
- 胜达集团招聘笔试题及答案
- 2024年阜阳幼儿师范高等专科学校单招职业技能测试模拟测试卷附答案解析
- 2023年达州中医药职业学院单招职业倾向性考试模拟测试卷附答案解析
- 2025年顺德职业技术学院单招职业技能测试题库附答案
- 2024年安徽水利水电职业技术学院单招职业技能考试模拟测试卷附答案解析
- 2024年安徽扬子职业技术学院单招综合素质考试题库附答案解析
- 2026年三亚航空旅游职业学院单招职业倾向性测试模拟测试卷附答案
- 2025年唐山职业技术学院单招职业倾向性测试模拟测试卷附答案解析
- (一诊)达州市2026届高三第一次诊断性测试历史试题(含答案)
- 《汽车网络与新媒体营销》期末考试复习题库(附答案)
- 生产厂长年度工作总结
- 工业传感器精度提升研发及电子制造应用项目阶段性推进成效及策略
- 管理金字塔游戏
- 中国银发经济市场与投资赛道66条(2025)(精要版)
- 卫生器材与装备操作使用试题和答案
- 2025-2026学年湖南省永州市高三上学期一模化学试题及答案
- 2025年国家开放大学《管理心理学》期末考试备考题库及答案解析
- 抹墙加固高延性混凝土施工方案
- 2025年内蒙古行政执法人员执法证考试题库及答案
评论
0/150
提交评论