UDP通信

网友投稿 522 2022-10-23

UDP通信

UDP通信

/**作者:呆萌老师*☑csdn认证讲师*☑高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里给大家分享技术、知识和生活*各种干货,记得关注哦!*/

InetAddress类

IP是网络中存在一个数据,那么Java针对这类特殊的数据,会使用对应的类进行描述、封装。

学习Java中的网络编程,对应的类和接口都在java-包下:

Java中使用InetAddress类描述封装IP对象。只要在程序中我们需要操作ip地址,只能通过InetAddress对象进行完成。

InetAddress类中没有构造方法,只能通过其中的静态的方法获取到InetAddress对象。

public class TestInetAddress { /** * @param public static void main(String[] args) { // TODO Auto-generated method stub try { InetAddress obj= InetAddress.getLocalHost();//获得本地主机 System.out.println(obj.getHostAddress()); //返回主机地址(ip) InetAddress obj2=InetAddress.getByName("taobao.com"); System.out.println(obj2.getHostAddress());//返回的是ip System.out.println(obj2.getHostName());//返回主机名 taobao.com InetAddress[] arr=InetAddress.getAllByName("taobao.com"); for(InetAddress ipobj:arr) System.out.println(ipobj.getHostAddress()); InetAddress obj3=InetAddress.getByName("192.168.1.136"); System.out.println(obj3.getHostAddress());//192.168.1.136 } catch (UnknownHostException e) { // TODO Auto-generated catch block

UDP通信

DatagramSocket对象介绍

UDP协议是面向无连接的协议,发送数据的一方尽管发送数据,它不关心接收方是否在接收数据。

在Java中使用DatagramSocket对象表示基于UDP协议的发送端或者是接收端。

数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

DatagramPacket对象介绍

数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。

DatagramPacket:它本身负责的对基于UDP协议发送或者接收的数据进行打包或者拆包的。

如何区分DatagramPacket对象到底是打包还是拆包的对象:完全依赖创建DatagramPacket对象时调用的构造方法。

代码实现案例

package com.wowowo.udp;import java.io.IOException;import java-.DatagramPacket;import java-.DatagramSocket;import java-.SocketException;public class UdpReceive { /** * @param public static void main(String[] args) { // TODO Auto-generated method stub //1.创建码头 接收端的码头需要添加端口号,发送端端口号要跟接收端的端口号一致 try { DatagramSocket datagramSocket=new DatagramSocket(8888); //2.创建packet 用来接收传递过来的数据 byte[] data=new byte[1024]; int length=data.length; DatagramPacket datagramPacket=new DatagramPacket(data, length); //3.接收数据 datagramSocket.receive(datagramPacket); String ip=datagramPacket.getAddress().getHostAddress(); String msg=new String(data); System.out.println("接收到来自"+ip+"的信息:"+msg); //4.关闭码头 datagramSocket.close(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block

package com.wowowo.udp;import java.io.IOException;import java-.DatagramPacket;import java-.DatagramSocket;import java-.InetAddress;import java-.SocketException;import java-.UnknownHostException;public class UdpSend { /** * @param public static void main(String[] args) { // TODO Auto-generated method stub //发送端 try { //1.创建一个socket(码头) DatagramSocket datagramSocket=new DatagramSocket(); //2.创建packet (集装箱) byte[] data="呆萌老师你好".getBytes(); int length=data.length; InetAddress ip=InetAddress.getByName("192.168.31.111"); int port=8888; // 0-1023端口号一般是常用的知名的程序的端口号 65535以内 //DatagramPacket(byte[] buf, int length, InetAddress address, int port) DatagramPacket datagramPacket=new DatagramPacket(data, length, ip, port); //3.发送 datagramSocket.send(datagramPacket); //4.关闭码头 datagramSocket.close(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block

更多了解

​​https://edu./course/20124.html​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python样板工程,用于使用Click库创建复杂的命令行应用程序
下一篇:关于mybatis
相关文章

 发表评论

暂时没有评论,来抢沙发吧~