1、UPD接受端
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class MyUdpAccept {
public static void main(String [] args) throws Exception{
byte[] buf=new byte[1024];//创建一个长度为1024的字节数组,用于接收数据
//定义一个DatagramSocket对象,监听的端口号8954
DatagramSocket ds=new DatagramSocket(8954);
//定义一个DatagramPacket对象,用于接受数据
DatagramPacket dp=new DatagramPacket(buf,1024);
System.out.println("等待接受数据");
ds.receive(dp);//等待接受数据,如果没有数据则会阻塞
//调用DatagramPacket的方法获得接收的信息,包括内容,长度、IP地址和端口号
String str=new String(dp.getData(),0,dp.getLength()) + "from" +
dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(str); //打印接受到的信息
ds.close();
}
}
创建一个接收端程序,用来接收数据。在创建DatagramSocket对象时,指定其监听端口8954,这样发送端就能通过这个端口和接受端进行通信了。
ds.receive(dp);//等待接受数据,如果没有数据则会阻塞。表示只有接受数据时才会继续向下执行。
运行起来:
等待接受数据
2、UDP发送端
import java.net.DatagramSocket;
import java.net.InetAddress;
public class MyUdpSend {
public static void main(String [] args) throws Exception{
//创建一个DatagramSocket对象
DatagramSocket ds=new DatagramSocket(3000);
String str="Hello World";//要发送的数据
//创建一个要发送的数据包,包括发送数据,数据长度,接受端IP地址以及端口号
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("localhost"),8954);
System.out.println("发送消息");
ds.send(dp); //发送数据
ds.close(); //释放资源
}
}
发送端可以不指定端口号的3000,这样系统就会在每次发送时
自己随机分配一个。
运行起来:
发送信息
同时接受端发生改变:
等待接收数据
Hello world from 127.0.0.1:3000
参考文档:
Java基础入门 传智博客高教产品研发部
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。