




已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 基于TCP/IP协议的 Socket编程 7.1 TCP/IP协议 7.2 套接字(Socket) 7.2.1 Client/Server模式 7.2.2 套接字(Socket)概念 7.3 Socket类和ServerSocket类 7.3.1 Socket类 7.3.2 ServerSocket类 7.4 Socket编程应用举例 7.4.1 Socket编程的基本步骤 7.4.2 单客户/服务器Socket编程应用举 例 7.4.3 多客户/服务器Socket编程应用举 例 本章小结 7.1 TCP/IP协议 nTCP/IP协议(传输控制协议/网际协议)是一 种网络通信协议,是一种面向连接的可靠的传 输协议。它规范了网络上的所有通信设备,尤 其是一个主机与另一个主机之间的数据传输格 式以及传送方式。TCP/IP是Internet的基础协 议。 nTCP/IP协议的基本传输单位是数据包(datagram )。TCP协议负责把数据分成若干个datagram,并 给每个datagram加上包头;IP在每个包头上再加上 接收端主机地址,以确定数据传输的目的地。如果 传输过程中出现数据丢失或数据失真等异常情况, TCP协议会自动要求数据重发,并重新分包。TCP 保证数据传输的质量,IP协议保证数据的传输。 nTCP/IP协议数据的传输是基于TCP/IP模型的4层 结构:应用层、传输层、网络层和网络接口层。 TCP/IP协议组中两种主要 协议 n1、传输层协议 n有两个主要的传输层协议:传输控制协议( TCP)和用户数据报协议(UDP)。 n(1)传输控制协议(TCP) nTCP传输数据建立在面向连接的基础上,实现 了一种“虚电路”的概念。双方通信之前,先建立 连接,然后双方即可在其上发送数据流,发送完 毕后再关闭连接。这种数据交换方式的优点是效 率高,缺点是建立连接和关闭连接需要额外的开 销。 (1)TCP协议 nTCP协议主要提供下列服务: n可靠的数据传输 n面向连接的虚电路 n缓冲的传输 n重新排序 n多路复用技术 n高效的、全双工传输 n流量控制 nTCP协议提供的是一种可靠的数据流服务。得 到的是一个顺序的无差错的数据流。 (2)用户数据报协议( UDP) nUDP是比TCP简单得多的协议,是对IP协议组 的扩充。 n由于大多数网络应用程序都在同一台机器上运 行,计算机上必须能够确保目的地址机器上的软 件程序能从源地址机器处获得数据包,以及源计 算机能收到正确的回复。这是通过使用 UDP 的“ 端口号”完成的。 n源端口号标识了请求域名服务的本地计算机的 应用程序,同时需要将所有由目的主机生成的响 应包都指定到源主机的这个端口上。 UDP与TCP比较 n与TCP不同,UDP提供的是面向无连接 、“不可靠”的数据报服务。它不提供对 IP 协议的可靠机制、流控制以及错误恢复功 能等。 n由于UDP比较简单,比TCP负载消耗少 。主要用于不需要TCP排序和流量控制能 力而是自己完成这些功能的应用程序。 2、应用层协议 n在应用层中定义了许多高层协议: n(1)TELNET(远程终端访问) nTELNET连接是一个TCP连接。允许一台 计算机上的用户登录到远程计算机上并进 行交互。支持终端到终端的连接及进程到 进程分布式计算的通信。 n(2)FTP(文件传输协议) nFTP使得主机间可以共享文件。FTP使用 TCP生成一个虚拟连接用于控制信息,然后再 生成一个单独的TCP连接用于数据传输。FTP 主要提供文件共享、支持间接使用远程计算机 、使用户不因各类主机文件存储器系统的差异 而受影响、可靠且有效的传输数据等功能。 n(3)SMTP(简单邮件传输协议) nSMTP支持在因特网上传递电子邮件,用 于可靠且有效的数据传输。它保证把各种 类型的电子邮件通过这一协议从一台邮件 服务器发送到另一台邮件服务器上。 n(4)DNS(域名服务) nDNS提供域名到IP地址的转换,允许对 域名资源进行分散管理。 n(5)HTTP(超文本传输协议) n是Web浏览器和Web服务器之间通信的 标准协议。它指明客户端如何与服务器建 立连接,客户端如何从服务器请求数据, 服务器如何响应请求,最后连接如何关闭 等。HTTP连接是一个TCP连接。 nTCP/IP模型中还有其他一些协议,如地 址解析协议(ARP)、因特网控制消息协 议(ICMP)等。 7.2 套接字(Socket) n套接字允许程序员把网络连接当成一个 流(Stream),并向这个流读写字节。 Socket对程序员掩盖了网络的低层细节, 如纠错、包大小、包重传、网络地址等。 本节将介绍Client/Server模式、套接字( Socket)概念。 7.2.1 Client/Server模式 n计算机网络最重要的3个功能是数据通信 、资源共享和分布处理。为了满足这些功 能需求,计算机网络产生了两种重要的应 用模式:客户端/服务器(Client/Server, C/S)模式和浏览器/服务器( Brower/Server,B/S)模式。采用何种应 用模式在编程实现时非常重要。下面将主 要介绍C/S模式。 n在C/S模式下,客户向服务器发出服务请求,服 务器接收到请求后,提供相应的服务。其工作方式 可通过现实生活中一个例子来说明。在一个酒店中 ,顾客向服务员点菜,服务员把点菜单通知厨师, 厨师按点菜单做好菜后让服务员端给顾客,这就是 一种C/S工作方式。如果把酒店看作一个系统,服 务员就是客户端,厨师就是服务器,这种系统分工 和协同工作的方式就是C/S的工作模式。 C/S模式 C/S模式下的系统组成 n由此可见,工作在C/S模式下的系统被分 成两大部分: n(1)客户端部分:为每个用户所专有的 ,负责执行前台功能。 n(2)服务器部分:由多个用户共享的信 息与功能,招待后台服务。 C/S模式建立的基础 nC/S模式的建立基于以下两点: n一是建立网络的起因是网络中软硬件资源 、运算能力和信息不均等,需要共享,从而 造就拥有众多资源的主机提供服务,资源较 少的客户请求服务这一非对等作用。 n二是网间进程通信完全是异步的,相互通 信的进程既不存在父子关系,又不共享内存 缓冲区,因此需要一种机制为希望通信的进 程建立联系,为二者的数据交换提供同步, 这就是基于C/S的TCP/IP。 基于C/S模式系统结构 客户端 服务器 前 台 显 示 事 务 处 理 数 据 处 理 数 据 库 C/S模式的工作模式 nC/S模式在操作过程中采取“请求/响应”的 工作模式。 n当用户需要访问服务器资源时由客户端 发出请求,服务器接收到请求后做出响应 ,然后执行相应的服务,把执行结果返回 到客户端,再由客户端作一定处理后返回 给用户。 “请求/响应”的工作模式的执行 过程 n执行过程如下: n(1)服务器侦听相应端口的请求; n(2)客户端发出一个请求; n(3)服务器接收到此请求; n(4)服务器处理这个请求,并把处理结果 返回给客户端。 n从上面所描述的过程可知:客户与服务 器进程的作用是非对称的,因此编码不同 。服务进程一般是先于客户请求而启动的 。只要系统运行,该服务进程一直存在, 直到正常或强迫终止。 7.2.2 套接字(Socket)概 念 n数据在Internet中是以有限大小的分组的 形式传输的。一个分组是一个数据报,包 括首部和负载。首部包含目的的地址和端 口、源地址和端口以及用于保证可靠传输 的各种其他管理信息。负载包含数据本身 。 n但由于分组长度有限,通常必须将数据 分解为多个分组,在目的地再重新组合。 n在传输过程中,有可能发生一个或多个 分组丢失或被破坏的情况,此时就需要重 传分组。或者分组乱序到达,则需要重新 排序。 n这些工作将是非常繁重的。幸运的是, 套接字(Socket)的出现使我们不必关心 这些事情,我们只需要把网络看成一个流 ,就象对文件操作一样对这个流进行操作 就行了。 套接字(Socket) n套接字(Socket)是网络协议传输层提供 的接口。Socket是两个程序之间进行双向数 据传输的网络通讯端点,有一个地址和一个 端口号来标识。 n每个服务程序在提供服务时都要在一个端 口进行,而想使用该服务的客户机也必须连 接该端口。 基于Socket的点对点通信 Internet Program A Host A Socket Program B Host B Socket 端口 两种套接字 n流套接字提供一个面向连接的、可靠的数据传 输服务,保证数据无差错、无重复、按顺序发 送。具有流量控制功能。数据被看作字节流, 无长度限制。TCP即是一种基于流套接字的通 信协议。 n数据报套接字提供一个面向无连接的数据传输 服务,不保证数据传输是可靠的、有序的、无 重复的。UDP即是一种基于数据报套接字的通 信协议。 n本章主要介绍基于TCP/IP协议的C/S模式下的 Socket编程。 基于TCP/IP的Socket通信模式 服务器客户端 建立连接 传输数据 终止连接 基于TCP/IP的Socket通信 模式 n在该种模式下,Socket可以看成是在两个程序 进行通信连接中的一个端点,一个程序将一段信 息写入Socket中,该Socket将这段信息发送到另 外一个Socket中,使这段信息能传送到其他程序 。每一个基于TCP/IP的程序都赋予了一个端口号 (065535),通过不同的端口号,区别服务器 上运行的每一个应用程序和所提供的服务。 n值得注意的是,习惯上将低于1024的端口号保 留给系统服务使用。 n在两个网络应用程序发送和接收信息时都 需建立一个可靠的连接,流套接字依靠TCP 来保证信息正确到达目的地。实际上,IP分 组有可能在网络中丢失或者在传送过程中发 生错误。当任何一种情况发生时,作为接收 方的TCP将请求发送方TCP重发这个IP分组 。因此,两个流套接字之间建立的连接是可 靠的连接。 Socket可进行的基本操 作 n(1)连接远程主机 n(2)发送数据 n(3)接收数据 n(4)关闭连接 n(5)绑定端口 n(6)侦听入站数据 n(7)在所绑定端口上接收远程主要的连接 利用Socket编程的一般 步骤 n(1)分别为服务器和客户端创建Socket对象, 建立Socket连接。 n(2)打开连接到Socket的输入输出流。Socket 对象包含两个流:一个是输入流,表示流入的数据 流,其作用是接收数据;一个是输出流,表示流出 的数据流,其作用是向外发送数据,其流操作与I/O 流相同。 n(3)按照一定的协议对Socket进行读/写操作, 在本章里是基于TCP/IP协议; n(4)读/写操作结束后,关闭Socket连接。 7.3 Socket类和 ServerSocket类 n在Java语言中,服务器端Socket使用 ServerSocket类,客户端Socket使用 Socket类,由此来区别服务器端和客户端 。本节将对这两个类进行详细介绍。 7.3.1 Socket类 .Socket类是Java用来实现客户 端TCP操作的基础类,在Java编程中一切 与TCP有关的操作包括连接的建立、传输 、连接关闭及Socket选项的设置都由 Socket类负责,这个类本身使用直接代码 通过主机操作系统的本地TCP栈进行通信 。Socket类的输入输出都是通过流来实现 的。 1Socket类的构造函 数 n(1)public Socket(String host,int port) throws UnknownHostException, IOException n功能:在客户端以指定的服务器host和端口号 port创建一个Socket对象,并向服务器发出连接请 求。 n参数: host:服务器主机名。 port:端口号。 n若域名服务器无法解析该服务器名或域名服务器 没有运行,此时host无法可知,则抛出 UnknownHostException异常;若生成Socket时发 生I/O错误则抛出IOException异常。 n(2)public Socket(InetAddress address,int port) throws IOException n功能:在客户端以指定的服务器地址address和 端口号port创建一个Socket对象,并向服务器发出 连接请求。 n参数: address:服务器IP地址。 port:端口号。 n若生成Socket时发生I/O错误则抛出IOException 异常。 n(3)public Socket(String host,int port,boolean stream) throws IOException n功能:在客户端以指定的服务器host和端口号port创 建Socket对象,并向服务器发出连接请求。如果stream 值为true,则创建流Socket对象,否则创建数据报 Socket 对象。 n参数: host:服务器名。 port:端口号。 stream:创建流Socket对象或创建数据报Socket对 象的标志。 n若生成Socket时发生I/O错误则抛出IOException异常 。 n(4)public Socket(InetAddress address,int port,boolean stream) throws IOException n功能:在客户端以指定的服务器IP地址address和端口 号port创建Socket对象,并向服务器发出连接请求。如果 stream值为true,则创建流Socket对象,否则创建数据报 Socket 对象。 n参数: address:服务器IP地址。 port:端口号。 stream:创建流Socket对象或创建数据报Socket对象 的标志。 n若生成Socket时发生I/O错误则抛出IOException异常。 n(5)public Socket(InetAddress address,int port,InetAddress localAddr,int localPort) nthrows IOException n功能:生成一个Socket并且连接到由address指定的服 务器的端口port上。该Socket将捆绑到由localAddr指定 的本地主机的localPort端口上。 n参数: address:服务器IP地址。 port:端口号。 localAddr:本地主机的IP地址。 localPort:本地主机上的端口号。 n若生成Socket时发生I/O错误则抛出IOException异常。 n(6)public Socket(String host,int port, InetAddress localAddr,int localPort) nthrows IOException n功能:生成一个Socket并且连接到由host指定的服务器 的端口port上。该Socket将捆绑到由localAddr指定的本 地主机的localPort端口上。 n参数: host:服务器名。 port:端口号。 localAddr:本地主机的IP地址。 localPort:本地主机上的端口号。 n若生成Socket时发生I/O错误则抛出IOException异常。 n(7)protected Socket(SocketImpl impl) throws SocketException n功能:根据用户指定的SocketImpl生成一个无连 接的socket。 n参数: impl:子类希望用在Socket上的SocketImpl 实 例。 n建立无连接失败时抛出SocketException异常。 n客户端流Socket的创建可通过使用 Socket类的构造函数完成。构造函数不仅 可以创建Socket对象,并且会尝试连接服 务器端的Socket。可通过这个方法测试某 个端口的连接是否允许。 2与Socket数据读写有 关的常用方法 n(1)public InetAddress getInetAddress() n功能:获取创建socket连接时指定服务器的IP地址 。 n(2)public InetAddress getLocalAddress() n功能:获取创建socket连接时客户端主机的IP地址 。 n(3)public int getPort() n功能:获取创建Socket连接时指定的服务器的端口 号。 n(4)public int getLocalPort() n功能:获取创建Socket连接时客户端的端口号。 n(5)public InputStream getInputStream() throws IOException n功能:为当前的socket对象创建输入流。 n(6)public OutputStream getOutputStream() throws IOException n功能:为当前的socket对象创建输出流。 n(7)public String toString() n功能:转换该Socket成一个String.字符串表示 。 3关闭Socket连接的方法 npublic synchronized void close() throws IOException n功能:关闭建立的Socket连接。当通信结 束时,应调用该方法关闭Socket连接。 n若在关闭Socket连接时发生I/O错误则抛 出IOException异常。 【例7.1】 SocketInfo.java import .*; import java.io.*; public class SocketInfo public static void main(String args) try Socket sktobj=new Socket(““,80); System.out.println(“1:connect to “+sktobj.getInetAddress()+“on port “+sktobj.getPort(); /获取服务器的IP地址和端口号 【例7.1】 SocketInfo.java System.out.println(“2:from port “+sktobj.getLocalPort()+“ of“+sktobj.getLocalAddress(); /获取客户端的IP地址和端口号 catch(UnknownHostException e) System.out.println(e); catch(IOException e) System.out.println(e); 【例7.2】 SocketAppClient.java import .*; import java.io.*; public class SocketAppClient public static void main(String args) int port=134; try Socket sc=new Socket(““,port); /创 建本地Socket连接 OutputStream out=sc.getOutputStream(); DataOutputStream dout=new DataOutputStream(out); /获取输出流,并创建相应的数据输出流 dout.writeUTF(“Tom“); /将“Tom”写入输出流 InputStream in=sc.getInputStream(); DataInputStream din=new DataInputStream(in); 【例7.2】 SocketAppClient.java /获取输入流,并创建相应的数据输入流 String str=din.readUTF();/从输入流中读取数据 System.out.println(str);/将读取的数据显示 in.close(); out.close(); sc.close(); /关闭相应流及Socket连接 catch(UnknownHostException e) System.out.println(e); catch(IOException e) System.out.println(e); 7.3.2 ServerSocket类 nServerSocket类用在服务器端,侦听和响应客 户端的连接请求,并接收客户端发送的数据。 nServerSocket类的主要任务是在服务器端耐心 地等候客户端的连接请求,一旦客户端应用程序 申请建立一个Socket连接,ServerSocket类就会 通过accept()方法返回一个对应的服务器端 Socket对象,以便进行直接通信。从两台计算机 连接成功时起,服务器端与客户端就得到了一个 真正的“Socket-Socket”连接。 1ServerSocket类构造 函数 n功能:创建一个指定端口号的服务器端的 socket。请求连接队列的最大队列长度为50,若 连接请求到达时队列已满,则拒绝连接。端口号 为0指在任何空闲端口上创建socket。 n参数: nport:端口号。 n若无法创建Socket并绑定于所请求的端口号则 抛出IOException异常。 n(2)public ServerSocket(int port,int backlog) throws IOException n功能:创建一个指定端口号的服务器端的socket。请 求连接队列的最大队列长度设置为backlog,若连接请 求到达时队列已满,则拒绝连接。端口号为0指在任何 空闲端口上创建socket。 n参数: nport:端口号。 nbacklog:请求连接队列的最大长度。 n若无法创建Socket并绑定于所请求的端口号则抛出 IOException异常。 n(3)public ServerSocket(int port,int backlog,InetAddress bindAddr) throws IOException n功能:创建一个指定端口号的服务器端的socket。请 求连接队列的最大队列长度设置为backlog,若连接请 求到达时队列已满,则拒绝连接。端口号为0指在任何 空闲端口上创建socket。与其它构造函数不同的是,该 构造函数要指定要绑定到的本地IP地址。主要用于在多 IP地址系统上运行的服务器。此时,它允许先把所侦听 的地址,服务器Socket只在指定的地址侦听入站连接, 不会侦听通过主机其他地址进入的连接。其他构造函数 默认绑定本地主机的所有IP地址。当bindAddr为null时 ,缺省地接受对任何所有本地IP地址的连接。 【例7.3】PortScan2.java import .*; import java.io.*; public class PortScan2 public static void main(String args) String host=“localhost“; for(int i=130;i140;i+) try ServerSocket a=new ServerSocket(i);/在端口号i创 建连接 System.out.println(“there is a server on port:“+i); /若可以创建连接,则输出提示信息 catch(IOException e) System.out.println(e); /若端口已被占用,则抛出异常 2ServerSocket类的常用 方法 n(1)public InetAddress getInetAddress() n功能:获取服务器端Socket的IP地址。 n(2)public int getLocalPort() n功能:获取服务器正侦听的端口号。 n(3)public Socket accept() throws IOException n功能:在服务器端指定端口侦听客户端发出的连接请求并 与之连接。该方法一直阻塞直到连接成功。该方法返回一个 新的Socket对象,通过该对象与客户端进行通信。 n若等待连接时发生I/O错误则抛出IOException异常。 n(4)public String toString() n功能:返回该socket的字符串表示 3关闭Socket连接的方法 npublic void close() throws IOException n功能:关闭该socket连接。当服务器需要 关闭,不处理任何其他入站连接时,调用 该方法。 n若关闭socket时发生I/O错误则抛出 IOException异常。 7.4 Socket编程应用举例 7.4.1 Socket编程的基本步骤 n1服务器端应用程序编写步骤 n(1)创建一个等待连接的ServerSocket对象,如Sersocket; n(2)调用Sersocket对象的accept()方法侦听接收客户端的连接 请求。当侦听到一个客户的连接请求时,连接成功,并返回一个 用于通信的Socket对象; n(3)创建与Socket对象绑定的输入输出流,并建立相应的数据 输入输出流; n(4)通过数据输入输出流与客户端进行数据读写,完成双向通 信; n(5)当客户端断开连接时,关闭各个流对象,结束通信。 n(2)(5)可循环执行。 n2客户端应用程序编写步骤 n(1)创建指定服务器上指定端口号的Socket对象; n(2)创建与Socket对象绑定的输入输出流,并建立 相应的数据输入输出流; n(3)通过数据输入输出流与服务器端进行数据读写 ,完成双向通信; n(4)通过调用close()方法关闭与服务器端的连接, 并关闭各个流对象,结束通信。 7.4.2单客户/服务器Socket 编程应用举例 n【例7.5】编写一个基于TCP协议的Socket 网络点对点聊天程序,可实现客户端和服务 器端信息的互发。 n1服务器端程序talkserver.java n2客户端程序talkclient.java 7.4.3多客户/服务器Socket 编程应用举例 n【例7.6】多客户/服务器程序。 n1服务器端程序 n(1)ServerSocketThread.java:线程子类,实现与 客户的数据通信 。 n(2)MultitalkServer.java:应用程序,等待并侦听多 个客户的连接。 n2客户端程序 n(1)ClientSocketThread.java:客户端线程子类,实 现和服务器的数据通信 n(2)TalkClient1.java和TalkClient2.java:建立和服 务器通信的客户1和客户2 本章小结 nTCP/IP协议 nClient/Server模式 n套接字(Socket)概念 nSocket类 nServerSocket类 n基于TCP协议的Socket编程的基本步骤 n单客户/服务器Socket编程应用 n多客户/服务器Socket编程应用 第8章 基于UDP协议的Socket 编程 第8章 基于UDP协议的Socket编程 8.1 UDP协议 8.2 DatagramPacket类和DatagramSocket类 8.2.1 DatagramPacket类 8.2.2 DatagramSocket类 8.3 基于UDP协议的Socket编程 8.3.1 基于UDP协议的Socket编程的基本步 骤 8.3.2 应用举例 本章小结 8.1 UDP协议 n用户数据报协议(User Datagram Protocol,UDP )是OSI参考模型中一种面向无连接的传输层协议, 提供面向操作的简单的不可靠数据传送服务。在网络 中它与TCP协议一样用于处理数据包。UDP 协议直 接工作于IP协议的顶层。 nUDP协议在发送数据时并不刻意追求数据包会完全 发送出去,也不能担保它们抵达的顺序与它们发出时 一样,因为它是一种不可靠协议。 UDP协议的特性: n(1)UDP是一个面向无连接的协议,传 输数据之前客户端和服务器端不建立连接 ,当它想发送数据时则获取来自应用程序 的数据,并尽可能快地把它放到网络上。 n(2)由于传输数据时不需建立连接,不 需维护连接状态,因此一台服务器可同时 向多个客户传输相同的数据。 UDP使用的类 nDatagramPacket类包含具体的要传输的信息,这 些信息被封装在称为数据报(Datagram)的UDP 包中。 nDatagramSocket类用于收发UDP数据报。 n为发送数据,要将数据封装到DatagramPacket中 ,使用DatagramSocket发送该包。为接收数据, 要从DatagramSocket中接收一个DatagramPakcet 对象,然后解析该包的内容。 UDP与TCP的比较 n(1)UDP没有两台主机间唯一连接的概念。 使用UDP时,每个数据报中都给出了完整的地址 信息,因此无需要建立发送方和接收方的连接。 对于TCP协议,由于它是一个面向连接的协议, 在Socket之间进行数据传输之前必然要建立连接 ,所以在TCP中多了一个连接建立的时间。 n(2)一个DatagramSocket可以从多个独立主 机接收数据,也可向多个主机传输相同的数据, 此Socket并不专用于一个连接。 n(3)TCP Socket将网络视为流,通过与 Socket相关的输入输出流来收发数据。而UDP所 处理的总是单个数据报包,封装在一个数据报中 的数据都以一个包的形式整体收发,一个包不需 与其它包相关。流中的数据是有序的,而数据报 包与数据报包之间是无序的。 n(4)使用UDP传输数据时是有大小限制的, 每个被传输的数据报必须限定在64KB之内。而 TCP没有这方面的限制,一旦连接建立起来,双 方的socket就可以按统一的格式传输大量的数据 。 8.2 DatagramPacket类和 DatagramSocket类 n8.2.1 DatagramPacket类 n该类表示一个数据报包。该数据报包用来实现 一个无连接包的传送服务。它是进行数据报通信 的基本单位。包含了IP地址、端口号和需要传输 的数据等。在发送和接收数据报时,要创建 DatagramPakcet类对象作为数据的载体。 1构造函数 n(1)public DatagramPacket(byte ibuf,int ilength) n功能:创建一个用于接收数据报的 DatagramPacket类对象。 n参数: nibuf:存储数据报的缓冲区。在数据报通信中 ,发送和接收一个数据报,都需提供一个缓冲区 ,用来安置发送和接收到的数据报。 nilength:接收数据报的长度,必须小于等于 ibuf.length。 n(2)public DatagramPacket(byte ibuf,int ilength,InetAddress iaddr,int iport) n功能:创建一个用于发送数据报的 DatagramPacket类对象。 n参数: nibuf:存储数据报的缓冲区。 nilength:发送数据报的长度,必须小于等于 ibuf.length。 niaddr:数据报要发送到的目的IP地址。 niport:数据报要发送到的目的地址的端口号。 2常用方法 n(1)public synchronized InetAddress getAddress() n功能:返回存放在接收或发送的数据报中的IP地址。 n(2)public synchronized int getPort() n功能:返回存放在接收或发送的数据报中的端口号。 n(3)public synchronized byte getData() n功能:返回存放在数据报中的数据。 n(4)public synchronized int getLength() n功能:返回数据报中数据的长度。 n(5)public synchronized void setAddress(InetAddress iaddr) n功能:设置发送数据报的目的地址为iaddr。 n(6)public synchronized void setPort(int iport) n功能:设置发送数据报的目的地址的端口号为iport。 n(7)public synchronized void setData(byte ibuf) n功能:设置数据报中的数据内容为字节数组ibuf的数 据。 n(8)public synchronized void setLength(int ilength) n功能:设置数据报中的数据的长度为ilength。 n该类表示用来发送和接收数据报包的套接字( Socket)。要收发DatagramPacket,必须打开 一个数据报套接字(Datagram Socket)。在 Java中,数据报套接字通过DatagramSocket类 来创建和访问。 8.2.2 DatagramSocket类 1构造函数 n(1)public DatagramSocket() throws SocketException n功能:创建用于数据报通信的socket对象,由本地 主机自动指定的一个可用的端口号。 n(2)public DatagramSocket(int port) throws SocketException n功能:创建用于数据报通信的socket对象,并且把 它绑定到本地主机指定的端口port。 n(3)public DatagramSocket(int port,InetAddress addr) throws SocketException n功能:创建用于数据报通信的socket对象,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古鄂尔多斯生态环境职业学院专业技术人员招聘18人考前自测高频考点模拟试题含答案详解
- 2025河南新乡市牧野区世青学校招聘考前自测高频考点模拟试题及答案详解(名校卷)
- 2025贵州遵义市赤水市第一批就业见习招募34人模拟试卷及答案详解(网校专用)
- 2025江西南昌市东方航空配餐有限公司招聘劳务派遣人员1人模拟试卷及答案详解(名师系列)
- 2025河南郑州市第六人民医院招聘考前自测高频考点模拟试题及答案详解(全优)
- 2025年山东职业学院公开招聘人员(28名)模拟试卷及答案详解(必刷)
- 2025黑龙江五大连池风景区宣传和统一战线工作部招聘1名公益性岗位1人考前自测高频考点模拟试题(含答案详解)
- 2025福建三明市大田县住房和城乡建设局(房地产服务中心)补招聘工作人员(政府购买服务)1人模拟试卷及答案详解(有一套)
- 2025年牡丹江市高校毕业生留牡来牡就业创业专项行动工作的模拟试卷(含答案详解)
- 2025年上海新型烟草制品研究院有限公司所属企业招聘2人(第一批次)笔试题库历年考点版附带答案详解
- 医院工作纪律培训课件
- 营房装修施工方案(3篇)
- 品牌基础知识培训内容课件
- 2025年教师师德师风考试题(附答案)
- 2025年知识竞赛-监理知识竞赛历年参考题库含答案解析(5套典型题)
- DG-TJ08-2120-2025 集体土地所有权调查技术标准
- 脑梗死健康宣教及指导
- 遵守安全生产法 当好第一责任人
- 创伤性气胸护理查房
- DB42T 750-2011 家用燃气燃烧器具安装维修服务质量评价规范
- 氧化蜡行业深度研究分析报告(2024-2030版)
评论
0/150
提交评论