栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java UDP 编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java UDP 编程

java UDP 编程 DatagramSocket的构造器。

DatagramSocket(int port, InetAddress laddr):创建一个DatagramSocket实例,并将该对象绑定到指定IP地址、指定端口。

//都早localhost内测试
//发送端,不用着急加入数据,将数据放在packet里
DatagramSocket socket = new DatagramSocket();
//接收端
DatagramSocket socket = new DatagramSocket(9090);
收发函数

一旦得到了DatagramSocket实例之后,就可以通过如下两个方法来接收和发送数据。

receive(DatagramPacket p):从该DatagramSocket中接收数据报。

send(DatagramPacket p):以该DatagramSocket对象向外发送数据报。

DatagramPacket

由上面两个函数的参数可以看出,并不能通过首发函数直接进行数据的传输,需要借助DatagramPacket存储数据,进而传输

DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):创建一个用于发送的DatagramPacket对象,指定发送buf字节数组中从offset开始,总共length个字节,目的ip地址address, 目的端口号port。

//发送端
// 创建一个发送数据的DatagramPacket对象  
DatagramPacket packet = new DatagramPacket(buf, length, address, port);  
// 发送数据报  
socket.send(packet);  

//接收端
// 创建一个接收数据的DatagramPacket对象  
DatagramPacket packet=new DatagramPacket(buf, 256);  
// 接收数据报  
socket.receive(packet);

获取发送者信息

UDP面向非连接的,但是在接收端,程序可以调用DatagramPacket的如下3个方法来获取发送者的IP地址和端口。

1.InetAddress getAddress():当程序准备发送此数据报时,该方法返回此数据报的目标机器的IP地址;当程序刚接收到一个数据报时,该方法返回该数据报的发送主机的IP地址。

2.int getPort():当程序准备发送此数据报时,该方法返回此数据报的目标机器的端口;当程序刚接收到一个数据报时,该方法返回该数据报的发送主机的端口。

3.SocketAddress getSocketAddress():当程序准备发送此数据报时,该方法返回此数据报的目标SocketAddress;当程序刚接收到一个数据报时,该方法返回该数据报的发送主机的SocketAddress。

public class UDPTest {

	//发送端
	@Test
	public void send() throws IOException {
		//不用加参数,将数据放在packet里
		DatagramSocket socket = new DatagramSocket();
		//记录对方的ip地址和端口号
		String str = "我是UDP";
		byte[] data = str.getBytes();
		InetAddress inet = InetAddress.getLocalHost();
		//封装一个数据报
		DatagramPacket packet = new DatagramPacket(data, 0, data.length, inet, 9090);
		
		//发送
		socket.send(packet);
		
		socket.close();
	}
		
	@Test
	public void receiver() throws IOException {
		DatagramSocket socket = new DatagramSocket(9090);
		
		byte[] buffer = new byte[100];
		DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
		
		socket.receive(packet);
		//利用getData()得到接受的信息
		System.out.println(new String(packet.getData(), 0, packet.getLength()));
		
		socket.close();
	}


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425581.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号