java_UDP

Posted luohaonan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java_UDP相关的知识,希望对你有一定的参考价值。

Socket编程:socket是计算机进程间通信的一种技术。socket包含api、通信的两端的端口和ip、通信的链接。


主要涉及的类:

  1. java.net.DatagramSocket  //代表通信建立的一个前提,相当于人或者时候氧气之于人的关系。
  2. java.net.DatagramPacket //代表通信使用的介质,相当于人从郑州到北京时候人之于交通工具的关系。
  3. java.net.InetAddress  //代表通信一端的IP地址。

服务端:

//服务端建立socket的时候要指定端口,但是客户端建立socket的时候不指定端口。

DatagramSocket server = new DatagramSocket(9876);


byte
[] recvBuf = new byte[100];
//udp数据包的创建需要指定:要接收活发送的内容所在的数组(缓冲区)、缓冲区的大小、数据包的IP、数据包的端口。
//显然当数据包用来接收的时候不指定数据包的IP、数据包的端口 DatagramPacket recvPacket
= new DatagramPacket(recvBuf , recvBuf.length);

//DatagramSocket接收和发送的一定是DatagramPacket对象的实例
server.receive(recvPacket);



String recvStr
= new String(recvPacket.getData() , 0 , recvPacket.getLength()); System.out.println("Hello World!" + recvStr);

 


 

 

客户端:

//客户端要发送数据包到服务端,创建socket不需要指定端口
DatagramSocket client = new DatagramSocket(); String sendStr = "Hello! I‘m Client"; byte[] sendBuf; sendBuf = sendStr.getBytes(); InetAddress addr = InetAddress.getByName("127.0.0.1"); int port = 9876;
//数据包的创建,因为是要发送的数据包,所以除了缓冲区内容、缓冲区大小,还要考虑服务端的IP和端口。 DatagramPacket sendPacket
= new DatagramPacket(sendBuf ,sendBuf.length , addr , port);
//socket发送的一定是DatagramPacket的实例 client.send(sendPacket);

 

在这之后:

//在收成功DatagramPacket对象之后的DatagramSocket对象可以通过接受的DatagramPacket实例获取发送者的信息,然后对发送者进行回话。

//在发成功DatagramPacket对象之后DatagarmSocket实力可以直接阻塞接收对方传来的信息。

  

 


 

 

在UDP编程中,发送、接收信息的时候缓冲区都是用byte数字来表示的,所以编码时候要注意一下。

 

















以上是关于java_UDP的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器