菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
6
0

UDP

原创
05/13 14:22
阅读数 48474

 

* UDP协议接收数据:
* A:创建接收端Socket对象
* B:创建一个数据包(接收容器)
* C:调用Socket对象的接收方法接收数据包
* D:解析数据包,并显示在控制台
* E:释放资源

 

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * UDP协议接收数据:
 * A:创建接收端Socket对象
 * B:创建一个数据包(接收容器)
 * C:调用Socket对象的接收方法接收数据包
 * D:解析数据包,并显示在控制台
 * E:释放资源
 * */

public class ReceiveDemo {
	public static void main(String[] args) throws IOException {
		// * A:创建接收端Socket对象
		DatagramSocket ds = new DatagramSocket(10086);

		// * B:创建一个数据包(接收容器)
		// DatagramPacket(byte buf[],int length)
		byte bys[] = new byte[1024];
		DatagramPacket dp = new DatagramPacket(bys, bys.length);

		// * C:调用Socket对象的接收方法接收数据包
		// public void receive(DatagramPacket p);
		ds.receive(dp);

		// * D:解析数据包,并显示在控制台
		// 获取对方的IP
		// public InetAddress getAddress();
		InetAddress address = dp.getAddress();
		String ip = address.getHostAddress();
		// public byte[] getData();获取数据缓冲区
		// public int getLength();获取数据的实际长度
		byte bys2[] = dp.getData();
		int length2 = dp.getLength();
		String s = new String(bys, 0, length2);
		System.out.println(ip + ":" + s);

		// * E:释放资源
		ds.close();
	}
}

 

* UDP协议发送数据:
* A:创建发送端Socket对象
* B:创建数据,并把数据打包
* C:调用Socket对象的发送方法发送数据包
* D:释放资源

 

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * UDP协议发送数据:
 * A:创建发送端Socket对象
 * B:创建数据,并把数据打包
 * C:调用Socket对象的发送方法发送数据包
 * D:释放资源
 * */

public class SendDemo {
	public static void main(String[] args) throws IOException {
		// * A:创建发送端Socket对象
		DatagramSocket ds = new DatagramSocket();

		// * B:创建数据,并把数据打包
		// DatagramPacket(byte buf[],int length,InetAddress address,int port);
		// 创建数据
		byte bys[] = "hello udp".getBytes();
		// 长度
		int length = bys.length;
		// IP地址对象
		InetAddress address = InetAddress.getByName("192.168.0.102");
		// 端口
		int port = 10086;
		DatagramPacket dp = new DatagramPacket(bys, length, address, port);

		// * C:调用Socket对象的发送方法发送数据包
		ds.send(dp);

		// * D:释放资源
		ds.close();
	}
}

 

发表评论

0/200
6 点赞
0 评论
收藏
为你推荐 换一批