Java程序设计项目式教程 课件 单元11 Java网络编程_第1页
Java程序设计项目式教程 课件 单元11 Java网络编程_第2页
Java程序设计项目式教程 课件 单元11 Java网络编程_第3页
Java程序设计项目式教程 课件 单元11 Java网络编程_第4页
Java程序设计项目式教程 课件 单元11 Java网络编程_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

§11-1学生信息文件的上传Java面向对象程序设计教学目标任务分析

学生基本信息即可以存储在数据库中,也可以存储在文件中,还可以存储在网络服务器中。本任务就是通过Java网络编程,将存储学生信息的文件上传至网络服务器。

教学内容1网络基础Socket类2多客户端访问处理43ServerSocket类网络基础

TCP/IP是TransmissionControlProtocol/InternetProtocol(传输控制协议/网际互联协议)的缩写,代表TCP协议和IP协议。TCP/IP是Internet上所有网络和主机之间进行交流所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。通常所说的TCP/IP协议实际上包含了大量的协议和应用,是且由多个独立定义的协议组合在一起的一个协议簇。7OSI应用6表示5会话4传输3网络2数据链路1物理TCP/IP应用

传输互联网主机至网络在模型中不存在图11-1TCP/IP参考模型网络基础

应用层:在TCP/IP模型中,应用程序接口是最高层,它与OSI模型中的高3层的任务相同,用于提供网络服务,如文件传输(FTP)、远程登陆(TELNET)、域名服务(DNS)和简单网络管理(SNMP)等。

传输层:TCP/IP的传输层也被称为主机至主机层,与OSI的传输层类似,主要负责主机到主机之间的端到端通信。该层使用了两种端到端的协议来支持数据的传送,即TCP协议和UDP协议。

互联网层:它是整个体系结构的关键部分,其主要功能是处理来自传输层的分组,将分组形成数据包(IP数据包),并为该数据包进行路径选择,最终将它们从源主机发送到目的主机。该层最常用的协议是IP协议,其它一些协议用来协助IP的操作。

主机至网络层:TCP/IP模型的最低层,也称网络访问层,包括能使用TCP/IP与物理网络进行通信的协议,对应着OSI的物理层和数据链路层。TCP/IP标准在该层没有定义具体的协议,只是指出主机必须使用某种协议与网络连接,以便能在其上传递IP分组。这极大的提高了灵活性,使得TCP/IP协议可以运行在任何网络之上。网络基础

标准的URL由3部分组成:协议类型、主机名和路径名。如图11-3所示为山东电子职业技术学院的WWW服务器的URL。

其中,“http”指出要使用HTTP协议;“”指出要访问的服务器的主机名;“Index.html”指出要访问的主页的路径及文件名。图11-3标准的URL组成网络基础URL的构成包括:信息服务方式://信息资源的地址/文件路径信息服务方式目前,WWW系统中编入URL的最普遍的服务连接方式有以下4种:lHTTP:使用HTTP协议,提供超文本信息服务的WWW信息资源空间。lFTP:使用FTP协议,提供文件传送服务的FTP资源空间。lFILE:使用本地HTTP协议,提供超级文件信息服务的WWW信息资源空间。lTELNET:使用TELNET协议,提供远程登陆信息服务的TELNET信息资源空间。Socket类JDK中提供了ServerSocket类,表示服务器端,Socket类表示客户端。通信时,首先要创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象,并向服务器段端发出连接请求,服务器端响应请求,两者建立连接后可以通信。socketserversocket客户端向服务器端发送请求服务器端响应客户端请求Socket类Socket常用构造方法方法说明publicSocket(Stringhost,intport)构造方法,远程服务器的地址和端口号publicSocket(InetAddresshost,intport)构造方法,远程服务器的地址和端口号publicInputStreamgetInputStream()获取输入流publicOutputStreamgetOutputStream()获取输出流publicvoidclose()关闭socketServerSocket类ServerSocket常用构造方法方法说明publicServerSocket(intport)构造方法,创建绑定到特定端口的服务器套接字publicSocketaccept()侦听并接受到此套接字的连接,返回Socket套接字。publicintgetLocalPort()返回此套接字在其上侦听的端口publicvoidclose()关闭ServerSocketSocket类、ServerSocket类publicclassclient_tcp{publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{ //创建客户端Socket对象(发送请求) Socketsocket=newSocket("",8888); //获取用于数据传输的输出流 OutputStreamos=socket.getOutputStream(); //将数据写出 os.write("老师您好,我是学生1".getBytes());

//客户端读取服务端回写的数据 InputStreamis=socket.getInputStream();

byte[]bys=newbyte[1024]; intlen=is.read(); Strings=newString(bys,0,len); System.out.println("客户端接收到的收据:"+s); socket.close(); }}Socket类、ServerSocket类publicclassServer_tcp{ publicstaticvoidmain(String[]args)throwsIOException{ //创建客户端Socket对象(发送请求) ServerSocketserver=newServerSocket(8888); System.out.println("服务器已启动!"); Socketsocket=server.accept(); System.out.println("接收到请求!"); //获取用于传输数据的流对象 InputStreamis=socket.getInputStream(); byte[]bys=newbyte[1024]; intlen=is.read(); Strings=newString(bys,0,len); System.out.println("服务端接收到的数据:"+s); //服务端写出数据 OutputStreamos=socket.getOutputStream(); //将数据写出 os.write("同学你好,消息已收到".getBytes()); socket.close(); }}多客户端访问处理

前面例子中的简单服务器存在一个问题:同一时刻只能有一个客户端连接到我们的服务器上。通常,服务器总是不间断的运行在计算机上,我们希望有多个客户端能够同时使用服务器,拒绝多客户端连接将使得一个用户因长时间连接而独占服务。其实,我们可以运用线程把这个问题解决好。

每当程序建立一个新的套接字连接,也就是说当accept()方法被成功调用的时候,将创建一个新的线程来处理服务器和该客户端的连接。主程序将立即返回并等待下一个连接。为了实现这个机制,服务器应该具有类似以下代码的循环操作。多客户端访问处理

每当程序建立一个新的套接字连接,也就是说当accept()方法被成功调用的时候,将创建一个新的线程来处理服务器和该客户端的连接。主程序将立即返回并等待下一个连接。为了实现这个机制,服务器应该具有类似以下代码的循环操作。while(true){ Sockets=server.accept(); Runnabler=newThreadServerHandler(s); newThread(r).start();}多客户端访问处理ThreadServerHandler类实现了Runnable接口,而且它的run()方法中包含了与客户端通信的代码。classThreadServerHandlerimplementsRunnable{ publicvoidrun(){ try{ InputStreaminStream=s.getInputStream(); OutputStreamoutStream=s.getOutputStream(); //处理输出与输出 s.close(); }catch(IOExceptione){ //处理异常 }}}由于每一个连接都会启

动一个新的线程,因而多个客户端就可以同时连接到服务器了。这里,服务器程序一旦运行就不会停止运行,可以使用CTRL+C强行关闭它。任务实施

实现学生信息文件的上传到服务器端的功能,我们需要分别编写服务器端程序及客户端程序,具体可参考如下步骤实现。实现一个简单的教师学生聊天应用程序,创建教师端和学生端,实现一个教师可以同时与多个学生进行对话式聊天。为了保证数据传输的安全与稳定,采用TCP进行消息的传输。。按“工单11-1”要求完成任务同步训练§11-2学生给教师留言Java面向对象程序设计教学目标任务分析

学生和教师之间需要进行沟通交流,本任务用于实现多名学生多次给教师留言,进行信息反馈。

教学内容1InetAddress类DatagramSocket类23DatagramPacket类InetAddress类

IP地址是指用一串数字表示的主机地址,它由4个字节组成,IPv6规定为16个字节。通常,不用过多考虑IP地址的问题。但是,如果需要在主机名和IP地址之间进行转换时,可以使用InetAddress类。静态的getByName()方法可以返回代表某个主机的InetAddress对象,例如:

InetAddressaddress=InetAddress.getByName(“”);上面的语句将返回一个InetAddress对象,该对象封装了一个4字节的序列:35。InetAddress类可以使用getAddress()方法来访问这些字节。byte[]addressBytes=address.getAddress();一些访问量较大的主机通常会对应多个IP地址以实现负载均衡。当主机被访问时,其IP地址将从所有地址里面随机产生,可以通过调用getAllByName()方法来获得所有主机。InetAddress[]address=InetAddress.getAllByName(host);最后需要说明的是,有时可能需要知道本机的地址。如果只是要求得到localhost的地址,总会得到地址,这个地址可能不是很有用。相反,可以使用静态方法getLocalHost()来得到本机的地址。InetAddressaddress=InetAddress.getLocalHost();UDP通信1

UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的原地址或目的地址,它在网络上任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的2

UDP不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频视频和普通数据在传输时使用UDP较多,因为它们即使偶尔丢一两个数据包,也不会对接收结果产生太大的影响。UDP通信的Socket使用DatagramSocket类实现,数据报使用DatagramPaket实现DatagramSocket类DatagramSocket常用构造方法方法说明publicDatagramSocket()构造方法,绑定到本地主机上任何可用的端口,多用于客户端publicDatagramSocket(intport)构造方法,绑定到本地主机上的指定端口,多用于服务器端publicDatagramSocket(intport,InetAddressaddr)构造方法,绑定到指定的地址和端口,适用于有多块网卡和多个IP地址的情况publicvoidsend(DatagramPacketp)发送数据报对象publicsynchronizedvoidreceive(DatagramPacketp)接收数据报对象publicvoidclose()关闭DatagramSocket

.DatagramSocket类代表一个数据报套接字,客户端和服务器都通过DatagramSocket发送和接收数据报包。DatagramPacket类DatagramPacket常用构造方法方法说明publicDatagramPacket(bytebuf[],intlength)构造方法,publicDatagramPacket(bytebuf[],intoffset,intlength,InetAddressaddress,intport)构造方法,远程服务器的地址和端口号publicsynchronizedintgetLength()发送或接收的数据报包的实际长度publicsynchronizedbyte[]getData()发送或接收的数据报包字节数组publicsynchroni

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论