package com.itcast.NWPr;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* UDP:面向无连接,不可靠,速度快。相当于步话机。
* TCP:面向连接,可靠,速度相对慢。相当于打电话。
* 需求:UDP演示
* udp发送端的思路:
* 1,建立udp的socket服务。
* 2,将要发送的数据封装成数据包。
* 3,通过udp的socket服务,将数据包发送取出。
* 4,建议关闭资源。
*
*udp的接收端:
* 思路:
* 1,使用DatagramSocket类,建立udp的socket服务。服务。并监听一个端口。
* 2,预先定义好一个字节数组作为数据包中的容器,使用这个数据包存储接收到的数据。
* 3,通过receive方法接收数据。
* 4,通过数据包对象的功能来完成对接收到的数据进行解析。
* 5,可以对资源进行关闭。
*
* @param args
* @throws Exception
*/
public class SendDemo {
public static void main(String[] args) throws Exception{
//udp发送端的思路:
//1,建立udp的socket服务。
//要使用DatagramSocket类,此类表示用来发送和接收数据报包的套接字。
DatagramSocket ds = new DatagramSocket();
//2,将要发送的数据封装成数据包。
//要使用DatagramPacket类。
//DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.54.9"),10000);
//InetAddress,此类表示互联网协议 (IP) 地址。InetAddress.getByName("192.168.54.9")获取一个IP对象
byte[] buf = "Hello哥们来了!".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),12345);
//3,通过udp的socket服务,将数据包发送取出。
ds.send(dp);
//4,建议关闭资源。
ds.close();
}
}
package com.itcast.NWPr;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class RecieveDemo {
/***udp的接收端:
* 思路:
* 1,使用DatagramSocket类,建立udp的socket服务。服务。并监听一个端口。
* 2,预先定义好一个字节数组作为数据包中的容器,使用这个数据包存储接收到的数据。
* 3,通过receive方法接收数据。
* 4,通过数据包对象的功能来完成对接收到的数据进行解析。
* 5,可以对资源进行关闭。
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
/*---接下来,看看接收端的定义---*/
//udp的接收端思路:
//1,使用DatagramSocket类,建立udp的socket服务。服务。并监听一个端口。
DatagramSocket ds = new DatagramSocket(12345);
//2,预先定义好一个字节数组作为数据包中的容器,使用这个数据包存储接收到的数据。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3,通过receive方法接收数据。
ds.receive(dp);
//4,通过数据包对象的功能来完成对接收到的数据进行解析。
String hostAddress = dp.getAddress().getHostAddress();
String hostName = dp.getAddress().getHostName();
int port = dp.getPort();
String text1 = dp.getData().toString();
String text2 = new String(dp.getData(),0,dp.getLength());
System.out.println("hostAddress="+hostAddress);
System.out.println("hostName="+hostName);
System.out.println("port="+port);
System.out.println("text1="+text1);
System.out.println("text12="+text2);
//5,可以对资源进行关闭。
ds.close();
}
}
上面是我通过代码的方式对UDP的发送和接收的总结。