第八讲java与网络编程.ppt
《第八讲java与网络编程.ppt》由会员分享,可在线阅读,更多相关《第八讲java与网络编程.ppt(56页珍藏版)》请在三一办公上搜索。
1、第八讲:java与网络编程,目录,1、Java与internet2、使用InetAddress和URL3、URL连接4、访问WWW资源5、Socket6、数据报,1、Java与网络,网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据
2、的。TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).,1、Java与网络,IP地址:标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中间以小数点分隔。如:166.111.136.3,166.111.52.80主机名(hostname):网络地址的助记名,按照域名进行分级管理。如:端口号(port number):网络通信时同一机器上的不同进程的标识。如:80,21,23,25,其中11024为系统保留的端口号服务类型(service):网络的各种服务。http,telnet,ftp,smtp
3、,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与网络,Java提供的网络功能有三大类:URL,Socket,Datagram.URL是三大功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据.Socket是传统网络程
4、序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上.,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=InetAddr
5、ess.getByName(“”);catch(UnknowHostException e)System.out.println(pku);,2.2、使用URL,URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。URL是最为直观的一种网络定位方法。使用URL符合人们的语言习惯,容易记忆,所以应用十分广泛。而且在目前使用最为广泛的TCP/IP中对于URL中主机名的解析也是协议
6、的一个标准,即所谓的域名解析服务。,2.2、使用URL,protocol:/resourceName协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。例如:http:/协议名:/主机名http:/协议名:/机器名文件名http:/:80/Gamelan/network.html#BOTTOM 协议名:/机器名端口号文件名内部引用,2.2、使用URL,我们可以通过下面的构造方法来初始化一个URL对象:(1)public URL(String
7、 spec);通过一个表示URL地址的字符串可以构造一个URL对象。URL urlBase=new URL(http:/www.(2)public URL(URL context,String spec);通过基URL和相对URL构造一个URL对象。URL net263=new URL(“http:/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 protoco
8、l,String host,int port,String file);URL gamelan=new URL(http,80,Pages/Gwork.html);,2.2、使用URL,public String getProtocol()获取该URL的协议名。public String getHost()获取该URL的主机名。public int getPort()获取该URL的端口号,如果没有设置端口,返回-1。public String getFile()获取该URL的文件名。public String getRef()获取该URL在文件中的相对位置。public String getQ
9、uery()获取该URL的查询信息。public String getPath()获取该URL的路径public String getAuthority()获取该URL的权限信息public String getUserInfo()获得使用者的信息public String getRef()获得该URL的锚,2.2、使用URL,通过URL读取WWW服务器上的数据将URL位置的数据转成一个数据流,URL url=new(http:/data=new DataInputStream(url.openStream();/*从数据流中读出数据*/String line=data.readLine()w
10、hile(line!=null)line=data.readLine(),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)S
11、ystem.out.println(Error URL);catch(IOException ie)System.out.println(Error IO);return true;,3、URL连接,URL双向通信(URLConection)URLConnection是一个一http为中心的类 1.建立连接 URL url=new URL(“http:/URLConnection con=url.openConnection();2.向服务器端送数据 PrintStream outStream=new PrintStream(con.getOutputStream();outStream.pr
12、intln(string_data);,3、URL连接,3.从服务器读数据 DataInputStream inStream=new DataInputStream(con.getInputStream();inStream.readLine();,客户端,java程序,DataOutputStream,DataInputStream,CGI程序,STDIN,STDOUT,服务器,(排序 sort.cgi),connectiuon,getchar(),putchar(),3、URL连接,URLConnection同时支持get和post两种机制一般的格式.缺省情况下为post method方式
13、URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接下面的例子中Java程序访问cgi程序,并传给它10个数据,cgi程序胡接收后,排序,并传送回来.这个例子演示了连接的建立、数据流的建立、java如何发数据、如何接收数据、cgi程序如何发送和接收,import java.io.*;import.*;public class test_cgipublic static void main(String args)throws Exception URL url=new URL(http:/URLConnection connection=url.openConn
14、ection();connection.setDoOutput(true);PrintStream out=new PrintStream(connection.getOutputStream();out.println(0123456789);out.close();,DataInputStream in=new DataInputStream(connection.getInputStream();String inputLine;while(inputLine=in.readLine()!=null)System.out.println(inputLine);System.in.read
15、();in.close();,你是第个来访者,4、访问WWW,起始页上的计数器及WWW程序(script),4、访问WWW,4、访问cgi,cgi(公共网关)程序可以用任何一种变成语言来写.cgi将web与外部程序连接起来(数据库查询等)cgi程序要放在指定的目录下cgi-bin目录.cgi通常以GET或POST接收数据,4、访问cgi,从小应用中运行CGI程序(GET)Socket runcgi=new Socket(“”,80);OutputStream os=runcgi.getOutputStream();PrintStream ps=new PringtStream(os);ps.p
16、rintln(“GET/cgi-bin/testcgi?arg1=val1,8.3 访问cgi,import java.io.*;import.*;public class test_cgi public static void main(String args)throws Exception URL url=new URL(http:/BIN/test_2.cgi?012345678);URLConnection connection=url.openConnection();#include stdio.h”main()char*Query_String;Query_String=get
17、env(QUERY_STRING);/*treatment*/,4、访问cgi,post方法通过标准输出向cgi传送参数(适合参数较多的情况)用post方法要有数据输出流,Socket runcgi=new Socket(“”,80);/建立socket连接DataOutputStream ds=runcgi.getOutputStream();/建立输入流ds.println(“POST/cgi-bin/guestbook.pl”);ds.println(“Content-type:plain/text”);/通知发送的数据类型/通知发送的数据长度String data=“Hello wor
18、ld”ds.println(“Content-length”+data.length+”n”);/发送数据ds.println(data);,5、Socket,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。在传统的UNIX环境下可以操作TCP/IP协议的接口不止Socket一个,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主
19、要是指基于TCP/IP协议的网络编程。说Socket编程是低层次网络编程并不等于它功能不强大,恰恰相反,正因为层次低,Socket编程比基于URL的网络编程提供了更强大的功能和更灵活的控制,但是却要更复杂一些。由于Java本身的特殊性,Socket编程在Java中已经是层次最低的网络编程接口。,5、Socket,在服务器端通过指定一个用来等待的连接的端口号创建一个 ServerSocket实例.在客户端通过规定一个主机和端口号创建一个 socket实例,连到服务器上.ServerSocket类的accept方法使服务器处于阻塞状态,等待用户请求Socket类和ServerSocket是基于TC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 java 网络 编程
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5328299.html