您好,欢迎访问三七文档
网络编程网络协议url编程socket编程网络环境中的javajava语言是Internet上的世界语。借助HTML从网上下载applet在程序中通过URL访问网上资源通过java.net包中的类直接在程序中实现网络通讯网络协议应用层:使用URL、URLConnection类Application(HTTP,FTP,telnet)Transport(TCP,UDT,..)Network(IP…)Link(devicedriver)Physics传输层:使用Socket、ServerSocket类一般应用程序是靠TCP(而不是IP)实现通讯功能,因为它们需要大量数据的无差错传输。URLURL—UniformResourceLocator指向WorldWideWeb上的一个资源。协议名(http、ftp、file等)资源位置(主机域名,也可用IP地址)端口号(服务器监听程序的端口。,FTP21,Telnet23)路径名(文件在机器中的路径名。资源文件或CGI程序等)引用(#指向资源文件的某一个位置)URL类一个URL对象代表一个URL资源构造函数URL(Stringspec)URL(URLbaseURL,StringrelativeURL)try{URLurl1=newURL()URLurl2=newURL(url1,“index.html”);}catchMalformedURLExceptionURL类方法方法1取出URL的指定成分信息url1.getProtocol()url1.getHost()url1.getPort()url1.getFile()方法2InputStreamurl1.openStream()1URLConnection类一个URLConnection对象代表一个Java程序与URL资源的通讯连接。通过它可对这个URL资源读或写。获得URLConnection类对象URLConnectionurl1.openConnection()成功,返回一个URLConnection对象不成功,抛出IOException例外URLConnection类的读写渠道getInputStream()getOutputStream()URL资源2InetAddress类表示一个IP地址类方法:创建IP地址实例:InetAddressip1=InetAddress.getLocalHost();InetAddressip2=InetAddress.getByName(166.111.7.250);InetAddressip3=InetAddress.getByName();类方法ip1.getHostName()ip1.getHostAddress()3传输层协议TCP(TransportControlProtocol)两主机之间有连接的、可靠的、端对端(end-to-end)的数据流的传输如http,ftp,telnet的传输层均使用此协议UDP(UserDatagramProtocol)从一台机器向另一台机器以无连接的、数据报的方式进行通讯的协议如:email可以使用UDPsocket通信端到端的连接与通信网络上的两个程序(进程)通过一个双向的通信连接实现数据的交换。双向链路的一端称为一个socket(套接字)主机—端口(用于区分同一台主机上的不同的通信应用进程:0~1023系统1024~65535用户)Socket编程步骤创建socket打开连接到socket的输入/输出流。按照一定的协议对socket进行读写操作,实现所要完成的主要工作。关闭socketSocket类构造函数:Socket(InetAddressaddr,intport)Socket(Stringaddr,intport)因是TCP支持类,所以需要端口号。使用该类——扮演客户机的角色。TCP连接会涉及客户机/服务器双方端口号。但客户机端口由TCP/IP软件自动分配。方法:InputStreamgetInputStream();outputStreamgetoutputStream();socket通信Server端通讯过程Client端通讯过程在某端口创建ServerSocket对象提供监听等待并接收Client端的请求利用返回的Socket对象与Client端通讯关闭Socket结束与此Client的通讯关闭监听创建Socket对象向Server某端口请求利用此Socket对象与Server端通讯关闭Socket结束与此Server的通讯建立连接数据通讯拆除连接socket通信Client//试图连接Socket(host;port#)OutputStreamInpotStreamSocket.close()Server//占用某个端口ServerSocket(hostport)//等待连接ServerSocket.accept()Socket()OutputStreamInpotStreamSocket.close()Socket与I/O流一个socket可以持有两个流—输入流与输出流c/s例—client端importjava.io.”importjava.net.*publicclassc{pbulicstaticvoidmain(Stringargs[]){try{Socketsocket=newSocket(“127.0.0.1”,8888);BufferedReadersin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWritersout=newPrintWriter(socket.getOutputStream());BufferedReaderinput=newBufferedReader(newInputStreamReader(System.in));c/s例—client端Stringask=input.readln();while(!ask.equals(“end”)){sout.println(ask);sout.flush();System.out.println(“serveranswer:”+sin.readline());ask=input.readline();}sin.close();sout.close();socket.close();}catch(Exceptione){}}//main}//classc…byeendc/s例—Server端importjava.io.”importjava.net.*publicclasss{pbulicstaticvoidmain(Stringargs[]){try{ServerSocketss=newServerSocket(8888);Socketsocket=ss.accept();//BufferedReadercin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWritercout=newPrintWriter(socket.getOutputStream());BufferedReaderinput=newBufferedReader(newInputStreamReader(System.in))c/s例—Server端Stringanswer,ask;ask=cin.readline()while(!ask.equals(“bye”)){System.out.println(“clientask:”+ask);answer=input.readline();cout.println(answer);cout.flush();ask=cin.readline()}cin.close();cout.close();socket.close();ss.close();}catch(Exceptione){}}//main}//classs4Server端创建一个ServerSocket对象(指定端口号).在该端口监听,当收到Client发出的请求时,创建一个Socket对象与此Client通讯:Socketsocket=ss.accept();接收到Client请求之前,该语句处于阻塞状态。通过Socket类的I/O流对象与Client端通信。结束通信,关闭输入输出流、关闭Socket对象。撤消服务时,关闭ServerSocket对象。Socket方法:InetAddressgetInetAddress()返回socket连接的地址server多客户机制服务器通信程序采用多线程,每个线程负责与一个客户对话…sSocket=newServersocket(8000)…while(listening){tSocket=sSocket.accept();newServerThread(tSocket).start()}ServerThreadextendThread{…publicvoidrun(){服务器端通信程序}5数据库访问JDBCclient/server支持多种数据库服务器。主要的处理逻辑在客户端(胖客户机)。服务器端的逻辑侧重于数据库的操作。胖客户机将频繁访问远程数据库,并导致网络流量的增大。ClientDBServerSQLJDBC概述ODBC(OpenDataBaseConnectivity)微软制定的一个C语言与数据库的统一接口JDBC(JavaDataBaseConnectivity)为Java语言定义的一个SQL调用级的统一界面。为访问关系数据库提供了一个标准的界面。JDK1.2中已包括了JDBC2.0的内容。JDBC概述JavaapplicationJDBCDriverManagerJDBCAPIJDBCDriver(数据库厂家提供)JDBCDriverAPIDBMS数据库连接每个JDBC应用程序至少要有一个JDBC驱动程序版本,JDBC驱动程序是Driver接口类的实现。Driver类是驱动程序厂家实现的接口,Driver使DriverManager和JDBC应用程序层可以独立于具体的数据库系统。应用程序JDBCOracle驱动程序Sybase驱动程序JDBCAPI(类)java.sql.DriveManager负责装载、拆除驱动程序,负责连接驱动程序。java.sql.Connection实现对某一数据库的连接功能(建立连接)。java.sql.Statement在一个给定的连接中作为执行SQL语句的容器。java.sql.PreparedStatement用于执行预编译的SQL声明java.sql.CallableStatement用于执行数据库中存储过程的调用java.sql.ResultSet保存SQL语句执行结果数据库连接例(Oracle)将classes111.zip文件的全路径名加入到环境变量CLASSPATH中。注册(装入)oraclejdbc驱动程序语法:DriverManager.registerDriver(Driverdriver)DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());建立连接(到指定数据库)Connectionconn=DriverManager.getConnection(jdbc:oracle:thin:@166.111.7.247:1521:o8i1,scott,
本文标题:JAVA学习课件9
链接地址:https://www.777doc.com/doc-1283949 .html