java udp http_Java中UDP协议的基本原理和简单用法

UDP协议是非面向连接的,相对于TCP协议效率较高,但是不安全。UDP协议类似发信息的过程,不管接收方是在线还是关机状态,都会把信息发送出去。但是如果接收方不处于接收信息的状态,发送出去的数据包就会丢失。

convert()方法是用来转换字节数组和基本类型。

/**

* 创建基于udp协议的服务接受端

* @author wxisme

*

*/

public class MyServer {

public static void main(String[] args) throws IOException {

//创建服务端端口

DatagramSocket server = new DatagramSocket(9898);

//准备接受数据的容器

byte[] container = new byte[1024];

//把数据封装成包

DatagramPacket packet = new DatagramPacket(container, container.length);

//接收数据

server.receive(packet);

//分析数据

//byte[] data = packet.getData();

double data = convert(packet.getData());

int len = packet.getLength();

//System.out.println(new String(data, 0, len));

System.out.println(data);

//释放资源

server.close();

}

/**

* 转换为基本类型

* @param data

* @return

* @throws IOException

*/

public static double convert(byte[] data) throws IOException {

DataInputStream dis = new DataInputStream(

new ByteArrayInputStream(data));

double num = dis.readDouble();

return num;

}

}

/**

* 创建基于udp协议的客户发送数据端

* @author wxisme

*/

public class MyClient {

public static void main(String[] args) throws IOException {

//创建服务端端口

DatagramSocket client = new DatagramSocket(6868);

//准备数据

//String str = "UDP Protocol";

double num = 216.35;

//byte[] data = str.getBytes();

byte[] data = convert(num);

//数据打包

DatagramPacket packet = new DatagramPacket(

data, data.length, new InetSocketAddress("localhost", 9898));

//发送数据

client.send(packet);

//关闭资源

client.close();

System.exit(0);

}

/**

* 将基本类型转换成字节数组

* @param num

* @return

* @throws IOException

*/

public static byte[] convert(double num) throws IOException {

byte[] data = null;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(bos);

dos.writeDouble(num);

dos.flush();

data = bos.toByteArray();

dos.close();

return data;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值