Java网络编程2.ppt
《Java网络编程2.ppt》由会员分享,可在线阅读,更多相关《Java网络编程2.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n11.1 Java和和Internet 11.2 Socket-编程编程n11.3 URL类类n11.4 Datagram(数据报数据报) 11.1 Java和和Internetn网络定义:网络定义:将分布在不同地理区域的计算机用通信线路互联起来的一个具有强大功能的网络系统网网络络协协议议nInternt提供的服务包括www(World-Wid Web)服务、电子邮件(E-mail)服务、文件传输(FTP)服务和远程登陆(Telnet)服务等网络协议网络协议A网络协议网络协议BTCP/IP协议协议TCP/IP协议协议不同网络之间的互联考完标准语言不同网络之间的互联考完标准语言TCP/IP协议
2、协议nTCP/IP(传输控制协议传输控制协议/网间协议网间协议):internet的主要的主要n协议协议,定义了计算机和外设进行通信所使用的规则定义了计算机和外设进行通信所使用的规则(应用应用n层层,传输层传输层,网络层网络层,链路层链路层).目前最流行的商业化协议目前最流行的商业化协议TCP/IP协议协议(传输控制协议传输控制协议/网间协议网间协议)FTP(文件传输协议文件传输协议):允许网络传输文件允许网络传输文件TELNET(虚拟终端协议虚拟终端协议):允许主机允许主机A远程远程登录主机登录主机BHTTP(超文本传输协议超文本传输协议):允许网络上传输允许网络上传输超文本超文本POP3(
3、邮局协议邮局协议-版本版本3):允许客户程序访允许客户程序访问在远程服务器上的电子邮件问在远程服务器上的电子邮件SMTP(简单邮件传输协议简单邮件传输协议):发送电子邮件发送电子邮件的协议的协议图8.1 TCP/IP协议的层次结构ATMX.25FDDI以太网IPTCPUDPTELNETFTPSMTPWWW 网络接口层 互联网层 传输层 应用层n网络的一些重要术语网络的一些重要术语nDNS(域名服务器域名服务器)n例:例:nIP地址地址:TCP/IP网络中的每台计算机都有唯网络中的每台计算机都有唯一的地址一的地址-IP地址地址.n 例例202.199.28.6 Socket, URL , Dat
4、agram是传统网络程序最常用的方式是传统网络程序最常用的方式, ,可以想象为可以想象为两个不同的程序通过网络的通信信道两个不同的程序通过网络的通信信道. .(TCP/IPTCP/IP)是三大功能中是三大功能中最高级的一种最高级的一种, ,通过通过URL JavaURL Java程序可以使用程序可以使用httphttp、filefile、ftpftp等协议,获取远端计算机上的资源信息,等协议,获取远端计算机上的资源信息,方便快捷地开发方便快捷地开发InternetInternet应用程序应用程序更低级的网络传输方式更低级的网络传输方式, ,它把数据的目的它把数据的目的地址在写在数据包中地址在写
5、在数据包中, ,然后将数据包放在网络然后将数据包放在网络上上.(.(UDP)UDP)n .InetAddress类类n作用:作用:存储服务器的存储服务器的IP地址地址,提供一系列静态工提供一系列静态工厂方法。厂方法。n常见方法:常见方法:n(1) InetAddress getLocalHost()n作用:作用:返回本机地址(机器名返回本机地址(机器名+IP) n(2)InetAddress getByName(String )n作用:作用:给定计算机名给定计算机名/域名域名,返回该机的地址。返回该机的地址。 n(3)String getHostAdress()n作用:作用:返回本机返回本机I
6、P地址地址 InetAddressn举例举例1:import .*;public class getLocalHostTest n public static void main(String args)n InetAddress myIP1=null,myIP2=nulln try n myIP1=InetAddress.getLocalHost();n myIP2=InetAddress.getByName(xzh);n catch(UnknownHostException e)n System.out.println(e.toString(); n System.out.println(
7、myIP1=+myIP1.toString();n System.out.println(myIP2=+myIP2.toString();n myIP1=LENOVO-A5267B58/192.168.1.100myIP2=LENOVO-A5267B58/192.168.1.100例例2nimport .*;npublic class getIPn public static void main(String args)n InetAddress IP1=null,IP2=null;n try n n IP1=InetAddress.getByName ();n IP2=InetAddress
8、.getAllByName ();n n catch(UnknownHostException e) n System.out.println(e.toString(); n System.out.println(IP1.toString();n System.out.println(IP2.toString(); n n11.2 Socket-套接字编程套接字编程n服务器:服务器:运行提供服务的程序的计算机运行提供服务的程序的计算机n 侦听建立连接的请求侦听建立连接的请求n客户机:客户机:使用由服务器程序所提供的服务的计算机使用由服务器程序所提供的服务的计算机n 试着与某个服务器建立连接试着
9、与某个服务器建立连接提供电子邮件提供电子邮件服务、服务、QQ聊聊天服务、天服务、MSN聊天服聊天服务、商务网站务、商务网站服务服务收发收发email浏览网页浏览网页收发收发email浏览网页浏览网页服务器客户机如何才能如何才能建立连接建立连接? Socket(套接字)套接字):连接的一个终端:连接的一个终端 Socket=IP+PortSocket的作用:分辨的作用:分辨internet上运行各种服务程序上运行各种服务程序网络服务器网络服务器192.168.12.12Mailftpwww110telnet2123客户程序客户程序SocketIP,port80ServerSocket布满插口的插
10、座板布满插口的插座板插头插头nPort(端口号端口号):TCP/IP协议为每种服务定义了一协议为每种服务定义了一个端口。个端口。n端口号的作用端口号的作用:当一台计算机上运行不同服务器当一台计算机上运行不同服务器程序时程序时,根据端口号不同提供相应的服务根据端口号不同提供相应的服务.n端口号范围:端口号范围:1-65535internet服务服务端口号端口号端口号端口号internet服务服务telnet 23 nntp 119ftp 21 www 80DNS 53 POP3 110nJava的的Socket通信模式通信模式服务器服务器Ss=new ServerSocket(port #)s=
11、Ss.accept()OutputStreamInputStreamSocket.close()ServerSocket.close()客户端客户端new Socket(host, port #)OutputStreamInputStreamSocket.close()Socket向服务器指定端口发出连接请求向服务器指定端口发出连接请求n2实现实现Socket通信通信 ServerSocket类类(布满插口的服务器)(布满插口的服务器) Socket类(插头)类(插头)服务器程序服务器程序n客户端程序客户端程序Mailftpwww110telnet212380客户程序客户程序SocketIP,
12、portnServerSocket类类n作用:作用:负责负责 接受客户连接请求接受客户连接请求n构造函数:构造函数: ServerSocket(int port ) throws IOException ServerSocket(int port ,int backlog ) throws Exception backlog参数:参数:显示设置连接请求的队列长度,只显示设置连接请求的队列长度,只要被加入到连接请求队列才可能与服务器连接成功要被加入到连接请求队列才可能与服务器连接成功nServerSocketServerSocket实例方法:实例方法:nSocket accept()n作用:作用
13、:从连接队列中取一个客户机的连接请求,从连接队列中取一个客户机的连接请求,创建一个与客户连接的创建一个与客户连接的Socket对象对象nInetAddress getInetAddress()n作用:作用:返回服务器返回服务器 socket 的本地地址的本地地址 getLocalPort()n作用:作用:获得本连接的端口号获得本连接的端口号nclose() n作用:作用:使服务器释放占用的端口并断开与所有客使服务器释放占用的端口并断开与所有客户进程的连接户进程的连接nSocket类类n构造函数:构造函数:nSocket( String host , int port) n throws unk
14、nownHostException, IOExceptionn作用:作用:试图建立与服务器的连接,如果连接成功返试图建立与服务器的连接,如果连接成功返回一个回一个Socket对象对象n客户连接服务器时可能抛出的异常客户连接服务器时可能抛出的异常nUnknownHostException:无法识别主机名字或无法识别主机名字或IP地址地址nConnectException:服务器进程拒绝连接,或没有服务器服务器进程拒绝连接,或没有服务器 n 进程监听制定端口进程监听制定端口nSocketTimeoutException:等待连接超时等待连接超时nBindException:无法把无法把Socket
15、对象与指定的本地对象与指定的本地IP地址地址n 或或port绑定绑定n实例方法实例方法npublic InetAddress getInetAddress() n作用:作用:返回远程服务器的地址。返回远程服务器的地址。n public InetAddress getLocalAddress() 作用:作用:获得客户本地的获得客户本地的IP地址地址npublic InputStream getInputStream()n作用:作用:获得输入流获得输入流nPublic OutputStream getOutputStream()n作用:作用:获得输出流获得输出流nPublic void close
16、()n作用:作用:关闭关闭Socket连接连接程序举例n功能描述:服务器程序向客户机程序发功能描述:服务器程序向客户机程序发送字符串送字符串 “hihi”服务器程序举例(服务器程序举例(p204)nimport .*; import java.io.*;public class Myservern public static void main(String args)n try ServerSocket serverS=new n ServerSocket(5432);n while(true)n Socket s= serverS.accept();n PrintStream out=ne
17、w n PrintStream(s.getOutputStream();n out.println(hi);n out.close(); s.close(); n catch(IOException e) 客户机程序举例客户机程序举例(p205)npublic class Myclientn public static void main(String args)n tryn Socket s=new Socket(127.0.0.1,5432); n BufferedReader in=new BufferedReader(new n InputStreamReader(s.getInput
18、Stream();n String x=in.readLine();n System.out.println(read from server: +x);n in.close(); n catch(IOException e) read from server: hi3指定一协议编写客户指定一协议编写客户/服务器程序服务器程序程序功能:程序功能:演示一个简单的服务器与客户的交互演示一个简单的服务器与客户的交互即服务器客户机相互通一次信息。即服务器客户机相互通一次信息。ServerSs=new ServerSocket(port #)Socket s=Ss.accept()OutputStrea
19、mInputStreamClose SocketClientnew Socket(host, port #) Attempt the connectionOutputStreamInputStreamClose SocketWaiting connecting requirementn服务器规则:服务器规则:n(1 1)向客户机发一个)向客户机发一个 “user:user:”。n(2 2)读取客户机提供的用户名。)读取客户机提供的用户名。n(3 3)如果用户名)如果用户名=“lindalinda” 发送发送“welcome!welcome!”。n(4 4)如果用户名)如果用户名!=!=“lin
20、dalinda” 发送发送 “wrong namewrong name”! !。n相应的客户机规则:相应的客户机规则:n(1 1)读取服务器反馈信息。)读取服务器反馈信息。n(2 2)若反馈信息是)若反馈信息是 “user:user:”, ,则向服务器发送用户名并则向服务器发送用户名并n 执行(执行(3 3),若反馈信息不),若反馈信息不 “user:user:”退出。退出。n (3) (3)读取服务器反馈信息。读取服务器反馈信息。n(4 4)若反馈信息是)若反馈信息是 “welcomewelcome”! !则显示登陆成功信息。则显示登陆成功信息。n(5 5)若反馈信息是)若反馈信息是”wro
21、ng name!wrong name!”则显示输入错误用则显示输入错误用户名信息。户名信息。n自定义协议规则自定义协议规则8.5 Socket. 8.5 Socket创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流读客户读客户 端信息端信息向用户发出一个字符串向用户发出一个字符串创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(接收并显示接收并显示)送用户名给送用户名给服务器服务器关闭流关闭流waiting for user127.0.0.1 11111111user:/ot
22、herconnetcting client.linda/other提示用户登录成功提示用户登录成功读读socket流流User :lindaWelcome!/wrong nameTry connecting服务器进程服务器进程 客户机进程客户机进程public class ServerRegister public static void main(String args) ServerSocket Ss=new ServerSocket(1111); Socket s=Ss.accept(); PrintStream out=new PrintStream(s.getOutputStream
23、(); BufferedReader in=new BufferedReader( new InputStreamReader(s.getInputStream();服务程序服务程序:tryn while(true) n System.out.println(send to Client:+“user:);n out.println(“user:);n String x=in.readLine();n System.out.println(get from Client: +x);n if ( x.equals(linda) )n System.out.println(send to Clie
24、nt +Login n welcome!); n out.println(“welcome!); n else out.println(“wrong name!); n out.close(); in.close(); s.close();catch(IOException e)n System.out.println(e.toString();ntryString x=in.readLine();nif (x.equals(“user:)n System.out.printlnget from Server: +x); n System.out.println(send to Server:
25、 +linda);n out.println(linda);x=in.readLine();n System.out.println(“get from Server+x); n if (x=“welcome!”)n System.out.println(“register successfully”); n if (x=“wrong name”) n System.out.println(“register unsuccessfully”);n else System.exit(0); n out.close(); in.close(); s.close();ncatch(IOExcepti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 网络 编程
限制150内