
第八讲java与网络编程课件.ppt
56页Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,,‹#›,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第八讲:java与网络编程,,,,,第八讲:java与网络编程,目录,1、 Java与internet,2、 使用InetAddress和URL,3、URL连接,4、 访问WWW资源,5、 Socket,6、 数据报,,,目录1、 Java与internet,1、Java与网络,网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).,,,1、Java与网络网络编程的目的就是指直接或间接地通过网络协,1、Java与网络,IP地址:标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中间以小数点分隔 如:166.111.136.3 , 166.111.52.80,主机名(hostname):网络地址的助记名,按照域名进行分级管理 如: ,端口号(port number):网络通信时同一机器上的不同进程的标识 如:80,21,23,25,其中1~1024为系统保留的端口号,服务类型(service):网络的各种服务 http, telnet, ftp, smtp,,,1、Java与网络IP地址:标识计算机等网络设备的网络地址,,1、Java与网络,例:获取本机的IP地址,import .*;,public class getLocalHostTest,{ public static void main(),{ InetAddress myIP=null;,try {,myIP=InetAddress.,getLocalHost();},catch,(,UnknowHostException e){},System.out.println(myIP);,},},,,1、Java与网络例:获取本机的IP地址,1、Java与网络,Java提供的网络功能有三大类: URL, Socket, Datagram.,URL是三大功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据.,Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.,Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上.,,,1、Java与网络Java提供的网络功能有三大类: URL,,2.1、InetAddress类,InetAddress类主要用来区分计算机网络中不同节点,即不同的计算机并对其寻址。
2.1、InetAddress类InetAddress类主要,2.1、 InetAddress类,下面的例子演示java如何根据域名自动到DNS,上查找IP地址(与DNS服务器的连接减至一行),import .*;,public class getIP,{ public static void main(String args[]),{ InetAddress pku=null;,try{ pku=,InetAddress.getByName(“”);,}catch(UnknowHostException e) {},System.out.println(pku); },},,,,2.1、 InetAddress类下面的例子演示java如何,2.2、使用URL,URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源URL是最为直观的一种网络定位方法使用URL符合人们的语言习惯,容易记忆,所以应用十分广泛。
而且在目前使用最为广泛的TCP/IP中对于URL中主机名的解析也是协议的一个标准,即所谓的域名解析服务2.2、使用URLURL(Uniform Resource,2.2、使用URL,protocol://resourceName 协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用例如: 协议名://主机名 协议名://机器名+文件名 :80/Gamelan/network.html#BOTTOM 协议名://机器名+端口号+文件名+内部引用,,,,2.2、使用URLprotocol://resourceNa,2.2、使用URL,我们可以通过下面的构造方法来初始化一个URL对象:,(1) public URL (String spec); 通过一个表示URL地址的字符串可以构造一个URL对象 URL urlBase=new URL("http://www. public URL(URL context, String spec); 通过基URL和相对URL构造一个URL对象。
URL net263=new URL (“ URL index263=new URL(net263, “index.html”);,(3) public URL(String protocol, String host, String file);new URL("http", "", "/pages/G. html");,(4) public URL(String protocol, String host, int port, String file);URL gamelan=new URL("http", "", 80, "Pages/Gwork.html");,,,2.2、使用URL我们可以通过下面的构造方法来初始化一个UR,2.2、使用URL,public String getProtocol() 获取该URL的协议名public String getHost() 获取该URL的主机名public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1public String getFile() 获取该URL的文件名public String getRef() 获取该URL在文件中的相对位置。
public String getQuery() 获取该URL的查询信息public String getPath() 获取该URL的路径,public String getAuthority() 获取该URL的权限信息,public String getUserInfo() 获得使用者的信息,public String getRef() 获得该URL的锚,,,2.2、使用URLpublic String getProt,URL,Java 程序,DataInputStream,2.2、使用URL,通过URL读取WWW服务器上的数据,将URL位置的数据转成一个数据流,URL url=new (, data=new,DataInputStream(url.openStream());,/*从数据流中读出数据*/,String line=data.readLine(),while(line!=null) line=data.readLine(),,,URLJava 程序DataInputStream2.2、使,2.2 使用URL,public boolean action(Event evt, Object arg),{ try{,String line;,String str=textfield.getText();,url=new URL(str);,data=new DataInputStream(url.,openStream,());,while((line=,data.readLine,())!=null){,textarea.appendText(line); },data.close();,}catch(MalformedURLException me){,System.out.println("Error URL");,}catch(IOException ie){,System.out.println("Error IO");,},return true;,},,,2.2 使用URLpublic boolean action,3、URL连接,URL双向通信(URLConection),URLConnection是一个一http为中心的类,1. 建立连接,URL url=new URL(“ con=url.openConnection();,2. 向服务器端送数据,PrintStream outStream=new,PrintStream(con.getOutputStream());,outStream.println(string_data);,,,,3、URL连接URL双向通信(URLConection),3、URL连接,3. 从服务器读数据,,DataInputStream inStream=new,DataInputStream(con.getInputStream());,inStream.readLine();,,客户端,,,,java程序,DataOutputStream,DataInputStream,CGI程序,,,,STDIN,STDOUT,服务器,,,,(,排序,sort.cgi),connectiuon,getchar(),putchar(),,,3、URL连接3. 从服务器读数据客户端java程序Data,3、URL连接,URLConnection同时支持get和post两种机制一般的格式.,缺省情况下为post method方式,URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接,下面的例子中Java程序访问cgi程序,并传给它10个数据,cgi程序胡接收后,排序,并传送回来.这个例子演示了连接的建立、数据流的建立、java如何发数据、如何接收数据、cgi程序如何发送和接收,,,,3、URL连接URLConnection同时支持get和po,import java.io.*; import .*;,public class test_cgi,{public static void main(String[] args) throws Exception,{ URL url = new,URL(" connection = url.openConnection();,connection.setDoOutput(true);,PrintStream out = new,PrintStream(connection.getOutputStream());,out.println("0123456789");,out.close();,,,import java.io.*; import java.,DataInputStream in = new,DataInputStream(connection.getInputStream());,String inputLine;,while ((inputLine = in.readLine()) != null),System.out.println(inputLine);,System.in .read ();,in.close();,,,DataInputStream in = new,欢迎来访,你是第 个来访者!,1,2,7,你是第,,个来访者,客户端,,,,HTML,服务器端,,,,CGI程序,,num++,img,cgi,程序名,4、访问WWW,起始页上的计数器及WWW程序(script),,,欢迎来访,你是第,4、访问WWW,,,,send,reset,Your name,,,数据库,服务器,Web服务器,cgi,程序,form,,,,4、访问WWW












