Java程序设计-11-网络编程.ppt
- 文档编号:2667785
- 上传时间:2022-11-06
- 格式:PPT
- 页数:50
- 大小:856KB
Java程序设计-11-网络编程.ppt
《Java程序设计-11-网络编程.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-11-网络编程.ppt(50页珍藏版)》请在冰豆网上搜索。
JavaJava程序设计程序设计第第1111章章网络编程网络编程学习目标学习目标了解网络编程的基本概念能够使用ServerSocket和Socket类来实现基于TCP协议的客户/服务器通信创建多线程服务处理器能够使用DatagramPacket和DatagramSocket进行基于UDP协议的网络通信用URL获取Web资源11.111.1网络基础网络基础1主机名和IP地址IP地址就是唯一标识计算机等网络设备的网络地址u如:
166.111.136.3,202.117.30.79主机名(hostname):
网络地址的助记名,按照域名进行分级管理。
如:
在Internet上IP地址和主机名是一一对应的,通过域名解析可以由主机名得到机器的IP2端口(port)通常一台主机上总是有很多个进程(运行中的程序)需要网络资源进行网络通讯。
网络通讯的对象准确的讲不是主机,而应该是主机中运行的进程。
具体来讲,端口号(portnumber)就是网络通信时同一机器上的不同进程的标识。
TCP/IP系统中的端口号是一个16位的数字,它的范围是065535。
u1)公认端口:
从0到1023u2)注册端口:
从1024到49151u3)动态和/或私有端口客户和服务器必须事先约定所使用的端口。
如果系统两部客户和服务器必须事先约定所使用的端口。
如果系统两部分所使用的端口不一致,那就不能进行通信。
分所使用的端口不一致,那就不能进行通信。
3使用端口的一些限制从0到1023,它们紧密绑定于一些服务。
通常这些端口的通讯明确表明了某种服务的协议。
如21对应的是FTP服务,23则是提供的Telnet服务。
除非要和那些服务之一进行通信(例如Telnet,SMTP邮件和FTP等),否则在程序中不应该使用它们。
例如:
80端口实际上总是HTTP通信中Web服务的端口号。
从49152到65535主要用于动态和/或私有端口。
理论上,不应为服务分配这些端口11.1.211.1.2传输协议传输协议协议就是通讯双方互相约定的传送信息的格式定义。
目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。
包含:
uTCPuUDPTCP和UDP是底层的网络通信协议,进行应用层程序开发时,需要考虑自定义的通信协议。
11.1.211.1.2传输协议传输协议(cont.)(cont.)1TCP协议TCP是TransmissionControlProtocol的简称,是一种面向连接的保证可靠传输的协议。
通过TCP协议传输,得到的是一个顺序的无差错的数据流。
发送方和接收方各有一个socket,两个socket之间必须建立连接,以便在TCP协议的基础上进行通信。
11.1.211.1.2传输协议传输协议(cont.)(cont.)2UDP协议UDP是UserDatagramProtocol的简称,是一种无连接的协议,也不进行差错及流量的控制。
因此UDP提供的服务是不可靠的,基于UDP的应用程序可根据情况自己承担可靠性方面的工作11.1.211.1.2传输协议传输协议(cont.)(cont.)3TCP和UDP的差异u使用UDP时,无需要建立发送方和接收方的连接;TCP中多了一个连接建立的时间。
u使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
而TCP没有这方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。
uUDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。
而TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
讨论:
讨论:
既然有了保证可靠传输的TCP协议,为什么还要非可靠传输的UDP协议呢?
11.311.3包包DatagramPacket和和DatagramSocket两个类构成了两个类构成了UDP开发的基础开发的基础ServerSocket和和Socket,两个类构成了,两个类构成了TCP开发的基础开发的基础InetAddress类用于表示互联网协议类用于表示互联网协议(IP)地址地址通过程序获得网络地址通过程序获得网络地址import.*;publicclassGetLocalHostTestpublicstaticvoidmain(Stringargs)InetAddressmyIP=null;/声明声明IP地址对象变量地址对象变量trymyIP=InetAddress.getLocalHost();/获得本机获得本机IP地址地址/下面的语句显示了获得指定主机名的下面的语句显示了获得指定主机名的IP地址的方法地址的方法/myIP=InetAddress.getByName();System.out.println(“主机地址:
主机地址:
+myIP.getHostAddress();System.out.println(HostNameis+myIP.getHostName();catch(UnknownHostExceptione)/忽略异常忽略异常11.211.2基于基于TCPTCP的网络编程的网络编程网络上的两个程序通过一个双向的通讯连接实现数据的可靠交换,这个双向链路的一端称为一个Socket。
Socket是TCP/IP协议的一个十分流行的编程界面,通常用来实现客户方和服务方的连接。
一个Socket实例由一个IP地址和一个端口号唯一确定。
Socket是一种用于网络通信的低层开发接口,借助于通信两端的应用程序(实际上是Socket)可以利用输入输出流完成数据交换。
11.2.111.2.1客户和服务器客户和服务器dialing基于基于SocketSocket的通信过程的通信过程创建创建ServerSocketaccept()?
yesNcloseclosesocketsocketMorningwelcome服务器端程序客户端程序11.2.211.2.2创建服务器端创建服务器端SocketSocket作用u运行在主机上的服务程序提供了面向客户端的特定应用,例如HTTP服务、FTP服务等,读者也可以创建属于自己的特定服务。
为了达到这一目的,首先就需要创建一个服务器套接字-ServerSocket,注册到主机系统,开始提供侦听服务。
构造函数uServerSocket(intport);uServerSocket(intport,intbacklog);uServerSocket(intport,intbacklog,InetAddressbindAddr)创建、监听示意代码创建、监听示意代码ServerSocketserverSocket=null;tryserverSocket=newServerSocket(6666);catch(IOExceptione)System.exit
(1);SocketclientSocket=null;tryclientSocket=serverSocket.accept();catch(IOExceptione)System.exit
(1);提供在6666端口上的侦听服务accept()方法是一个阻塞式方法,直到收到一个连接请求后,程序将会继续运行下去clientSocket对应于客户端的socket,获得后可以利用它和客户端通信表表11-1ServerSocket类的主要方法类的主要方法accept()accept()侦听并接受到此套接字的听并接受到此套接字的连接接bind(SocketAddressbind(SocketAddressendpoint)endpoint)将将ServerSocketServerSocket绑定到特定地址(定到特定地址(IPIP地址和端口号)地址和端口号)close()close()关关闭此套接字此套接字getChannel()getChannel()返回与此套接字关返回与此套接字关联的惟一的惟一ServerSocketChannelServerSocketChannel对象(如果有)。
象(如果有)。
getInetAddress()getInetAddress()返回此服返回此服务器套接字的本地地址器套接字的本地地址getLocalPort()getLocalPort()返回此套接字在其上返回此套接字在其上侦听的端口听的端口getLocalSocketAddrgetLocalSocketAddress()ess()返回此套接字返回此套接字绑定的端点的地址,如果尚定的端点的地址,如果尚未未绑定定则返回返回nullnullisClosed()isClosed()返回返回ServerSocketServerSocket的关的关闭状状态11.2.311.2.3创建客户端创建客户端SocketSocket作用u连接到服务器socket,以便通信构造函数uSocket(InetAddressaddress,intport);uSocket(Stringhost,intprot);uSocket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)uSocket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)客户端访问服务器客户端访问服务器Socketclient=null;tryclient=newSocket(127.0.0.1,6666);/client=newSocket(,6666);catch(UnknownHostExceptione)System.exit
(1);catch(IOExceptione)System.exit
(1);/此处可以添加通信代码此处可以添加通信代码client.close();希望连接的服务器所在主机地址希望连接的服务器程序监听端口表表11-2Socket类的主要方法类的主要方法bind(SocketAddressbind(SocketAddressendpoint)endpoint)将将套套节字字绑定到特定地址(定到特定地址(IPIP地址和端口号)地址和端口号)close()close()关关闭此套接字此套接字getLocalPort()getLocalPort()返回此套接字在其上返回此套接字在其上侦听的端口听的端口getInputStream()getInputStream()返回此套接字的返回此套接字的输入流入流,来自来自对端的端的输出出getOutputStream()getOutputStream()返回此套接字的返回此套接字的输出流,可以向出流,可以向对端端输出数据出数据getInetAddress()getInetAddress()返回此套接字返回此套接字连接的地址接的地址getPort()getPort()返回此套接字返回此套接字连接到的接到的远程端口程端口getRemoteSocketAddress()getRemoteSocketAddress()返回此套接字返回此套接字连接的端点的地址,如果未接的端点的地址,如果未连接接则返返回回nullnullisClosed()isClosed()返回返回套套节字的关字的关闭状状态11.2.411.2.4通信过程通信过程在上面创建服务器端和客户端Socket的过程中,两端都需要一个Socket对象。
双方的通信就是利用Socket对象所提供的输入输出流完成双方的数据传输,这时通信过程就变成了I/O流的输入输出过程,不过这里的数据源分别是对端的Socket对象。
一端socket向自己输出流输出信息,对端socket利用自己的输入流可以接收。
获得一个获得一个socketsocket的的I/OI/O流流每个Socket实例均有一对输入输出流用来和对方进行通信,socket的通信就是流的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 11 网络 编程