版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java网络编程(二),数据报通信(UDP),UDP协议是无连接的协议,它以数据报作为数据传输的载体。数据报是一个在网络上发送的独立信息,它的到达、到达时间以及内容本身等都不能得到保证。数据报的大小是受限制的,每个数据报的大小限定在64KB以内。 UDP协议无需在发送方和接收方建立连接,但也可以先建立连接。数据报在网上可以以任何可能的路径传往目的地。 在Java中,基于UDP协议实现网络通信的类有三个: 用于表达通信数据的数据报类DatagramPacket 用于进行端到端通信的类DatagramSocket 用于广播通信的类MulticastSocket。,点到点通信:类DatagramSo
2、cket,构造方法 public DatagramSocket() public DatagramSocket(intport) /在指定的端口通信 public DatagramSocket(intport, InetAddressladdr) /在指定的地点运行 这三个方法都将抛出例外SocketException,程序中需要捕获处理。 最主要的方法发送与接收数据报 public void receive(DatagramPacketp) public void send(DatagramPacketp) 这两个方法都将抛出例外IOException,程序中需要捕获处理。 其他方法 pub
3、lic void connect(InetAddressaddress, intport) /与指定的机器通信,有连接 public void disconnect() /关闭与指定机器的连接 public void close() /关闭Socket,点到点通信,发送端(服务器端)发出数据报的标准步骤: 1. 定义数据成员 DatagramSocket socket; DatagramPacket packet; InetAddress address;(用来存放接收方的地址) int port; (用来存放接收方的端口号) 2. 创建数据报Socket对象 try socket = new
4、 DatagramSocket(2876); catch(.SocketException e) socket 绑定到一个本地的可用端口,等待接收客户端的请求。,数据报:类DatagramPacket,构造方法 public DatagramPacket(bytebuf, intlength) public DatagramPacket(bytebuf, intoffset, intlength) /这两个方法用于描述接收数据报 public DatagramPacket(bytebuf, intlength, InetAddress address, intport) public Data
5、gramPacket(bytebuf, intoffset, intlength, InetAddressaddress, intport) /这两个方法用于发送数据报 获取数据获取接收数据报中的信息 public InetAddress getAddress() public byte getData() public int getLength() public int getOffset() public int getPort() 设置数据设置发送数据报中的信息 setAddress(InetAddressiaddr)、setPort(intiport)、setData(bytebuf
6、)、setData(bytebuf, intoffset, intlength) 、setLength(intlength),点到点通信,3.分配并填写数据缓冲区(一个字节类型的数组) byte buf = new byte256; 存放从客户端接收的请求信息。 4.创建一个接收数据报DatagramPacket packet = new DatagramPacket(buf, 256); 用来从socket接收数据,它只需要两个参数 5. 服务器阻塞(等待接收数据) socket.receive(packet); 在客户的请求数据报到来之前一直等待。,点到点通信,从到来的接收数据报中得到客户
7、端的地址和端口号InetAddress address = packet.getAddress(); int port = packet.getPort(); 7. 准备需要发送的数据:将数据送入缓冲区buf 或来自文件、或键盘输入 8. 建立发送数据报,用来从socket向客户端发送信息 packet = new DatagramPacket(buf, buf.length, address, port); 9. 发送数据包 socket.send(packet); 10.关闭socket socket.close();,点到点通信,接收端(客户端)接收数据报的标准步骤: 1. 定义数据成员
8、 int port; InetAddress address; DatagramSocket socket; DatagramPacket packet; byte sendBuf = new byte256; 2. 建立socket socket = new DatagramSocket(); 无须指定端口号,它会自动获得一个可用的端口号。,点到点通信,3. 向服务器端发出请求数据报(发送数据报) address = InetAddress.getByName(“localhost”); port = 2876; /获得服务器端的IP和端口号 packet = new DatagramPac
9、ket(sendBuf, 256, address, port); socket.send(packet); 这个数据报本身会带有客户端的信息 4. 客户端等待服务器端的应答(通过接收数据报接收数据) packet=new DatagramPacket(sendBuf, 256); socket.receive(packet); 如果没有到就一直等待,因此实用程序要设置等待时间限度 5. 处理接收到的数据 String received=new String(packet.getData(), 0); System.out.println(received);,multicast,广播通信,D
10、atagramSocket只允许数据报发往一个目的地址。类包中提供了类MulticastSocket,允许将数据报以广播的方式发送到某个端口的所有客户。 类MulticastSocket是在客户端(接收端)使用,监听服务器端广播来的数据;而服务器端仍然使用DatagramSocket来发送数据,只是发送的数据报的目的地址有所变化。,广播通信,类MulticastSocket:从DatagramSocket继承而来 构造方法 public MulticastSocket() public MulticastSocket(intport) :在指定的端口通信 这两个方法都将抛出例外IOExcept
11、ion,程序中需要捕获处理。 主要方法 public void joinGroup(InetAddressmcastaddr):加入一个广播组 public void leaveGroup(InetAddressmcastaddr):离开一个广播组 public void setTimeToLive(intttl):指定数据报离开时间 public void send(DatagramPacketp, bytettl):在指定的时间内将数据报发送出去 这四个方法都将抛出例外IOException,程序中需要捕获处理。 继承DatagramSocket的方法 public void receiv
12、e(DatagramPacketp):接收数据 public void send(DatagramPacketp):发送数据 public void connect(InetAddressaddress, intport):与指定的机器通信 public void disconnect():关闭指定的连接 public void close():关闭Socket,广播通信,MulticastSocket socket = new MulticastSocket(4446); InetAddress group = InetAddress.getByName(“224.0.0.1); socket.joinGroup(group); /receive datagram socket.lea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年华池县带编教师招聘笔试备考题库及答案解析
- 2026年惠来县社区工作者招聘笔试参考题库及答案解析
- 人教版新教材七年级英语上册Unit 4 My Favourite Subject Section B(1a-1d)教学设计
- 初中七年级英语时文组合读写训练教学设计
- 2026年福海县医疗事业单位人员招聘考试备考试题及答案解析
- 2026年福贡县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年中宁县医疗事业单位人员招聘笔试参考题库及答案解析
- 小学六年级科学《摩擦生热》教学设计
- 初中七年级英语Starter Units 1-3质量监测卷讲评课教学设计
- 2026年获嘉县带编教师招聘笔试备考题库及答案解析
- (正式版)DB51∕T 3322-2025 《水利工程建设质量检测管理规范》
- TCECS 1728-2024 消雾节水机械通风冷却塔冷凝模块性能试验方法标准
- 学校因病缺勤、缺课登记追踪制度
- 劳务员岗位知识培训课件
- TCSAE《摩托车和轻便摩托车操纵稳定性试验方法》编制说明
- 2025年发展对象考试测试题库附含答案
- 消除艾滋病、梅毒和乙肝母婴传播课件
- 外研版(三起)(2024)四年级上册英语 Unit 1 I love sports 单元整体教学设计(共5课时)
- 铁路通信基础知识培训课件
- 跨文化医疗沟通策略-洞察及研究
- 2 中国人首次进入自己的空间站 (课件)语文统编版2024八年级上册
评论
0/150
提交评论