package com.neutron.network.udp;
import java.io.IOException;
import java.net.*;
/**
* udp协议发送
* @author zhanght
*
*/
public class UdpSender {
/**
* 使用udp协议发送信息
* @param message 被发送的信息
* @throws IOException
*/
public static void sendDataByUDP(String message) throws IOException{
/*
* 使用udp发送信息过程
* 1.创建udpsocket服务,可以指定任意发送端接口,比如8888new DatagramSocket(8888),可以系统随机分配端口发送
* 2.提供数据,将数据封装到数据包中
* 3.使用updsocket服务,将数据包发送出去
* 4.关闭资源
*/
DatagramSocket socket = new DatagramSocket(8888);
byte[] buff = message.getBytes();
DatagramPacket datapacket = new DatagramPacket(buff, buff.length, InetAddress.getByName("127.0.0.1"), 2222);
socket.send(datapacket);
socket.close();
}
public static void main(String[] args) throws IOException {
sendDataByUDP("this is udp data test!");
}
}
package com.neutron.network.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* udp协议接收
* @author zhanght
*
*/
public class UdpReceiver {
/**
* 1.定义socket服务,监听某个端口,表明哪些数据过来应用程序处理。
* 2.定义数据包存储要接收到的字节数据
* 3.通过socket服务的receive方法将接收的数据存入已经定义好的数据包中
* 4.通过数据包对象特有的服务,将数据取出。
* 5.关闭资源
* @param message
* @return
* @throws IOException
*/
public static void receiveByUDP() throws IOException {
DatagramSocket socket = new DatagramSocket(2222);
byte[] buff = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(buff, buff.length);
/*此时接收的数据存储到receivePacket中,阻塞式方法*/
socket.receive(receivePacket);
byte[] data = receivePacket.getData();
String ip = receivePacket.getAddress().getHostAddress();
int port = receivePacket.getPort();
String message = new String(data, 0, receivePacket.getLength());
System.err.println("ip:" + ip + ", port:" + port + ",message:" + message);
//ip:127.0.0.1, port:8888,message: this is udp data test!
socket.close();
}
public static void main(String[] args) throws IOException {
receiveByUDP();
}
}
udp协议案例
最新推荐文章于 2023-01-05 04:30:00 发布