import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UDPDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//UDP发送
UDPSend();
System.out.println("send");
}
//UDP发送
public static void UDPSend(){
/*需求:通过UDP传输方式,将一段文字数据发送出去
* 思路:1.建立UDPSocket服务
* 2.提供数据,并将数据封装到数据包中
* 3.通过socket服务的发送功能,将数据包发出去
* 4.关闭资源
*/
//1.创建udp服务,通过datagramsocket对象
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
//2.确定数据并封装数据包
byte[] data = "UDP lai le ".getBytes();
try {
DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.118"), 10000);
try {
ds.send(dp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3.通过socket服务的发送功能,将数据包发出去
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//4.关闭资源
ds.close();
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPRecevie {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 需求: 定义一个应用程序,用于接受udp协议传输的数据并处理
*
* 思路:
* 1.定义udpSocket服务
* 2.定义一个数据包,因为要存储收到的字节数据,
* 因为数据包对象中有更多功能可以提取字节数据中的不同数据
* 3.通过socket服务的receive方法将收到的数据存入已经定义好的数据包中
* 4.通过数据包对象的特有功能,将这些不同设备取出,打印在控制台
* 5.关闭资源
*
* 定义接收端时,通常会监听一个端口,其实就是给这个接受网络应用程序定义数字标识
* 方便于明确那些数据过来该应用程序可以处理
*/
System.out.println("receive");
//1.创建udpSocket 建立终端
DatagramSocket ds = null;
try {
ds = new DatagramSocket(10000);
//2.定义一个数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//3.通过receive方法将收到的数据存入数据包中
try {
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);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
ds.close();
}
}
}
网友评论