import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* udp发送端
* 需求:通过udp传输方式,将一段文字数据发送出去。
* 1.建立udpsocket服务
* 2.提供数据,并将数据封装到数据包中,
* 3.通过socket服务发送功能,将数据包发出去
* 4.关闭资源
* @author Administrator
*
*/
class UDPsend {
public static void main(String[] args) throws Exception {
DatagramSocket ds;
//1.创建udp服务,通过datagramsocket对象
ds=new DatagramSocket();
//2.确定数据,并封装
byte[] data="sdfsdfsd".getBytes();
DatagramPacket dp=new DatagramPacket(data, data.length,InetAddress.getByName("127.0.0.1"),10000);
//3.通过socket服务,将已有的数据包发送出去,通过send 方法
ds.send(dp);
//4.关闭资源
ds.close();
}
}
/**
* 定义udp的接收端
* 需求:定义一个应用程序,用于接收udp协议传输的数据并处理
* 1.定义udpsocket服务,通常会监听一个端口,就是给这个接收网络引用程序定义数字标石,方便获取
* 2.定义一个数据包,因为要存储接收到的字节数据,数据包对象中有更多功能可以提取字节数据中的不同数据信息。
* 3.通过socket服务的receive方法将受到的数据存入已定义好的数据包中
* 3.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
* 5.关闭资源
*/
class UdpRece{
public static void main(String[] args) throws Exception {
//1.创建udp socket,建立断点
DatagramSocket ds=new DatagramSocket(10000);
while (true) {
//2.定义数据包,寸数据
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length);
//3.通过服务的receive将受到数据存入数据包
ds.receive(dp);//阻塞试方法
//4.通过数据包的方法获取数据
String ip=dp.getAddress().getHostAddress();
String data=new String (dp.getData(),0,dp.getLength());
int port=dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
}
// ds.close();
}
}