标签:
1.UDP简介
使用UDP发送消息,对方不一定收到,因为所有的信息使用数据报的形式发送出去,这就要求客户端要始终等待接收服务器发送过来的信息,在Java中使用DatagramSocket类和DatagramPacket类完成UDP程序的开发。
2.程序实现
使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作。DatagramPacket类的常用方法:
类型 |
方法 |
|
构造 |
|
构造 DatagramPacket ,用来接收长度为 length 的数据包。 |
构造 | DatagramPacket(byte[] buf, int length, InetAddress address, int port) |
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 |
byte[] | getData() |
返回数据缓冲区。 |
int |
|
返回将要发送或接收到的数据的长度。 |
DatagramSocket类常用方法:
类型 |
方法 |
描述 |
构造 | DatagramSocket(int port) |
创建数据报套接字并将其绑定到本地主机上的指定端口。 |
void |
|
从此套接字发送数据报包。 |
void |
|
从此套接字接收数据报包。 |
package org.demo.net; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPServer { public static void main(String[] args) throws Exception{ DatagramSocket ds = null; DatagramPacket dp = null; ds = new DatagramSocket(3000); String str = "hello"; dp = new DatagramPacket(str.getBytes(),str.length(), InetAddress.getByName("localhost"),9000); System.out.println("发送信息。"); ds.send(dp); ds.close(); } }
运行结果:
package org.demo.net; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception{ DatagramSocket ds = null; byte[] buf = new byte[1024];//定义接收数据的字节数组 DatagramPacket dp = null; ds = new DatagramSocket(9000); dp = new DatagramPacket(buf,1024); System.out.println("等待数据接收。"); ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength())+"from" +dp.getAddress().getHostAddress()+":"+dp.getPort(); System.out.println(str); ds.close(); } }
运行结果:
标签:
原文地址:http://www.cnblogs.com/yzl-i/p/4463387.html