第十三章 Java 网络编程基础_第1页
第十三章 Java 网络编程基础_第2页
第十三章 Java 网络编程基础_第3页
第十三章 Java 网络编程基础_第4页
第十三章 Java 网络编程基础_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、第13章Java网络编程的基础、2、主要内容、1、协议2、端口号3、插座基本概念4、TCP插座编程5、UDP插座编程6、URL编程、3、1、协议、1.1.IP协议1.2.TCP 4、协议的基本概念、协议:通过互联网传输、交换数据需要共同的规则,这些规则是协议,定义了数据格式、语义、流控制、错误检查等相关内容。 应用软件可以实现使用支持共同协议的网络软件在网络上共享数据并传送数据的目的。 5、5、5,1.1IP和IP协议用于管理客户端与服务器端之间的消息传输。 IP协议是所有互联网协议的基础,IP协议提供未连接、不可靠的IP数据报传输服务,IP协议已经成为世界上最重要的网络协议。 另外,6,6,1.2.TCP协议和传输控制协议(TCP )可提供对可信消息流传输和上层应用的连接服务以及TCP使用次序的响应,并且可以根据需要重发消息。 TCP在多个主机之间建立面向链路的通信。 TCP支持多流操作,提供流控制和差错控制,并且完成未排序到达消息的重新排序。 7、7、7,1.3.UDP协议和用户数据报协议(UDP )是IP协议的另一个主机-主机层协议。 UDP提供的传输基本上是低等待时间数据报。 UDP的简单性在于UDP不适合某些应用,但是它适合于更加复杂并且向其提供链路功能的应用。 其他可能使用UDP的情况包括交换路由表数据、交换系统信息和网络监视数据。 这些类型的交换器在网络技术中,端口(Port )大致为两种,无需流控制、响应、排序或TCP提供的功能: (1)物理上的端口。 例如,adsl调制解调器、集线器、交换机和路由器是用于连接其他网络设备的接口,如RJ-45端口和SC端口。 (2)逻辑意义上的端口。 指TCP/IP协议的端口,端口号范围为65535。 例如,用于阅览web服务器的80端口、用于FTP服务器的21端口等。 9、3、socket、Java网络编程是socket编程。 套接字是用户可与网络通信的对象。套接字可以理解为网络连接的端点,而不是物理设备。 10、套接字由应用制作,通过绑定机构与驱动器建立关系,将对应的IP和端口号传达给自己。 然后,应用程序发送到插座的数据从插座传递到驱动程序,然后发送到网络上。 计算机在从网络接收到与绑定至该插座的IP和端口号相关联的数据之后,当驱动器将该插座递送时,应用能够从该插座提取所接收的数据。 网络应用程序像这样通过插座进行数据的收发。 下面的图表11、12、4、TCP编程(套接字)、客户端-服务器模型是最常见的网络应用模型。 在网上冲浪时,IE等浏览器是客户端软件,提供网页的站点必须运行WEB服务器。 其他telnet和ftp应用程序都有客户端和服务器。 通常,主动启动通信的应用程序属于客户端。 服务器等待通信请求,服务器从客户机接收请求,执行必要的运算,将结果返回给客户机。 13、设计客户端-服务器软件时,程序员必须从两种交互模式中进行选择:面向连接的模式和无连接的模式。 面向连接的程序选择TCP/IP协议系列中的TCP协议;未连接的程序选择UDP协议。 连接和非连接之间的差异需要充分考虑,通常取决于应用程序提供的可靠性和支持网络提供的可靠性。 使用Java开发使用TCP协议连接的网络应用程序,分为客户端和服务器两部分进行说明。 另外,14、套接字通信、Java中,基于TCP协议实现网络通信的类是客户端侧的Socket类和服务器侧的ServerSocket类这两种。在服务器端,通过指定用于等待连接的端口号来创建ServerSocket实例。 通过在客户机上指定主机和端口号创建套接字实例,并将其连接到服务器。 ServerSocket类的accept方法将服务器置于阻塞状态,等待用户请求,15,类Socket结构方法: publicSocket(Stringhost, intport ) publicsocket (intetaddressaddress ) intport ) publicsocket (字符串主机,intport,InetAddresslocalAddr,int local port ) publicsocket intport,inetaddresslocaladdr ) int local port )在JDK 1.1之前,Socket类还可以用于TCP/UDP通信。 publicsocket (字符串主机,导入,布尔流) publicsocket (inetaddresshost,导入,布尔流)这些方法抛出异常IOException 16、类SocketSocket的输入/输出流管理publicinputstreamgetinputstream () publicvoidshutdowninput () publicoutputstreamgetoutputstream () publicvoidshutdowninput 如果关闭socketpublicvoidclose () throwwsioexception,则socket数据publicinetaddressgetinetaddress ()、public int getport ()publicvoidsetsots 这些方法抛出异常SocketException,需要程序进行捕获处理。 17、类ServerSocket的构建方法:公共服务器套接字(intport )公共服务器套接字(intport、intbacklog ) :指定数量的连接公共服务器套接字(intport、intport ) 支持InetAddressbindAddr )的方法抛出异常IOException,需要在程序中进行捕获。 主要方法是publicSocketaccept () :等待客户端连接的publicvoidclose () :获取套接字设置/套接字数据的publicinetaddressgetinetaddress ()、publicintgetLocalPort publicvoidsetsotimeout (int time out )、这些方法抛出异常SocketException,需要程序进行捕捉处理。 18、无论socket通信程序的功能有多完善,程序有多复杂,基本结构都相同,包括下面四个基本步骤: 1、在客户端和服务器端创建socket /服务器socket。 2 .打开连接到插座的输入/输出流。 3 .利用输入/输出流通过固定协议读取和写入套接字。 4 .关闭输入输出流和插座。 通常,程序员的主要功能是在步骤3中编程要完成的功能,步骤1、2、4在所有通信程序中大致相同,19、20、1,插座为客户端: try socket client=new socket (host,4444 ); catch(IOExceptione)服务器端: try server socket server=new server socket (4444 ); catch (io exceptions ) socketsocket=null; trysocket=server.accept () : /等待客户端连接catch(IOExceptione),21,2,在客户端和服务器端都打开输入输出流类Socket,从而获取与Socket对应的输入输出流,进行数据的读写操作,从而生成InputStream对象为了便于读取和写入数据,请在返回的I/o流对象中创建过滤器流。 例如DataInputStram/DataOutputStram、buffereddinputstream/buffereddutstream、PrintStream; 输入流读取器/输出流写入器、缓冲读取器/缓冲写入器、打印机等。 22,buffered reader=newbufferedreader (newinputstreamreader (socket.get inputstream () ) buffereddwriter=newbuffereddriter (newinputstreamwriter (socket.get output stream () ) 3 .关闭输入/输出流和插座在客户端和服务器端分别关闭输入/输出流和插座:首先关闭所有相关的输入/输出流,然后关闭插座。23、24、查看此通话程序的运行效果: 1、服务器端、SingleTalkServer.java、2、客户机、SingleTalkClient.java、25、简单客户端/服务器、本地计算机上的网络程序建立套接字连接后,还必须建立I/o流。 请控制输入输出流和插座关闭的时间。 如果网络的一端关闭,则另一端读取null。 在运行时,服务器端程序通常必须先启动。26、多客户端支持,解决方案1 :只要端口号不同,就可以在一台计算机上同时启动多个服务器程序。 my server1my client1my server2my client 2,27,解决方案2 :多线程服务器,改变处理线程,提供不同的客户服务。 主线程只负责循环等待,处理线程负责网络连接,并接收客户端输入的信息。 /主线程while(true)acceptaconnection; createaathreadtodealwithchecklient; endwhile,28,server socket=new server socket (4444 ) while (listening ) socketsocket; socket=serverSocket.accept () : /程序正在等待客户端连接newmultitalkserverthread (socket,客户端编号).start () : 客户端编号; /记录客户数据serverSocket.close () 、classmltitalkserverthreadedthread publicmultitalkserverthread (socketsocket,intclientnumber ) this.socket=socket; this.client number=client number 1; publicvoidrun()、29、MultiTalkServer.java、30、5、UDP编程(数据报)、UDP协议是未连接的协议,以数据报作为数据传输的载体。 数据报是在因特网上发出的独立信息,到达,到达时间,内容本身是不保证的。 数据报的大小受到限制,每个数据报的大小被限制在64KB以内。 UDP协议不需要在发送方和接收方建立连接,但是可以首先建立连接。 数据报可以通过互联网上可能的路径传达到目的地。 另外,在31、Java中,基于UDP协议实现网络通信的类是用于表现通信数据的数据包进行端对端通信的类数据报时钟组用于广播通信的类multicast套接字32、类DatagramPacket构造方法publicDatagramPacket(bytebuf,int length ) publicdatagrampacket (byte buf,intoffset intlength :这两种方法是: 数据publicDatagramPacket(bytebuf,intlength,InetAddressaddress,intport ) publicdatagrampacket (byte buf,intoffset, int length inetaddressaddress intport:publicinetaddressgetaddrress () public byte get data () public int,传送资料撷取资料以撷取所接收报告的资讯用于公共int get offset ()公共int getport ()的设置数据包括要发送的报告中的信息setAddress(InetAddressiaddr )、setPort(intiport )和setdata (byte byte buf、intoffset、intlength、setLength(intlength, 33 )设定类DatagramSocket构筑方法publicdatagramsocket () publicdatagramsocket(intport ) :在指定的端口中publicdatagramsocket (intport, InetAddressladdr ) :在指定位置执行这

温馨提示

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

评论

0/150

提交评论