java中网络编程------UDP协议(实现步骤)DatagramSocket对象

xiaoxiao2021-02-28  93

java中网络编程------UDP协议(实现步骤)

发送端

第一步:创建socket对象

DatagramSocket ds=new DatagramSocket();

第二步:创建DatapramPacket对象,将数据打包好

DatagramPacket p = new DatagramPacket(bytes,length,address,port);

传入三个值  第一个值传字节,第二个传address主机名或者IP地址,最后一个传程序端口号.

第三步:发送数据

ds.send(p);

调用send方法,数据包.就可以发送了?

第四步:关闭资源

ds.close();

package com.mytest.test02; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class SendDemo01 { public static void main(String[] args) throws IOException { //创建发送端的端口号 DatagramSocket ds=new DatagramSocket(); //创建数据并打包 /* * DatapramPacket * 数据byte[] * ip地址 * 进程地址端口号 * DatapramPacket(byte[] by,int length,InetAddress,int port) */ String s="帅哥,约不约?"; byte[] bytes = s.getBytes(); int length = bytes.length; //192.168.26.106 InetAddress address = InetAddress.getByName("坏坏想乖乖"); int port=28888; //打包数据发送 DatagramPacket p = new DatagramPacket(bytes,length,address,port); //发送数据 ds.send(p); //释放数据 ds.close(); } }

接收端

第一步:创建Socket对象,传入端口号

DatagramSocket ds = new DatagramSocket(8888);

在创建Socke对象时就,传入端口号

第二步:创建数据包对象

byte[] bys = new byte[1024];

DatagramPacket dp = new DatagramPacket(bys,bys.length);

创建接受端的数据传入数据包

第三步:接收数据

ds.receive(dp);

第四步:解析数据

//InetAddress getAddress() : 获取发送端的IP对象

InetAddress address = dp.getAddress();

//byte[] getData()  :获取接收到的数据,也可以直接使用创建包对象时的数组

byte[] data = dp.getData();

//int getLength()  :获取具体收到数据的长度

int length = dp.getLength();

第五步:输出数据

System.out.println(new String(bys,0,length));

第六步:关闭资源

ds.close();

package com.itheima_02; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* * 使用UDP协议接收数据 创建接收端Socket对象 接收数据 解析数据 输出数据 释放资源 */ public class ReceiveDemo { public static void main(String[] args) throws IOException { //创建接收端Socket对象 DatagramSocket ds = new DatagramSocket(8888); //接收数据 //DatagramPacket(byte[] buf, int length) byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys,bys.length); System.out.println(1); ds.receive(dp);//阻塞 System.out.println(2); //解析数据 //InetAddress getAddress() : 获取发送端的IP对象 InetAddress address = dp.getAddress(); //byte[] getData() :获取接收到的数据,也可以直接使用创建包对象时的数组 byte[] data = dp.getData(); //int getLength() :获取具体收到数据的长度 int length = dp.getLength(); //输出数据 System.out.println("sender ---> " + address.getHostAddress()); //System.out.println(new String(data,0,length)); System.out.println(new String(bys,0,length)); //释放资源 ds.close(); } }

转载请注明原文地址: https://www.6miu.com/read-48303.html

最新回复(0)