java 接收udp消息,java UDP server端接收消息会有上回的消息

java UDP server端接收消息会有上次的消息

DatagramSocket serverSocket = new DatagramSocket(8888);

byte[] receiveData = new byte[1024];

DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);

//接收文件信息,包括文件名,文件长度。

serverSocket.receive(receivePacket);

String fileName = new String(receivePacket.getData()).trim();

System.out.println("FileInfor: " + fileName);

fileName = fileName.split("\\.")[0] + "New." + fileName.split("\\.")[1];

System.out.println("NewFileName" + fileName);

FileWriter fileWriter = new FileWriter(fileName);

while(true){

receivePacket.setData(receiveData);

serverSocket.receive(receivePacket);

String filecon = new String(receivePacket.getData());

System.out.println("文件内容:" + filecon);

if(filecon.trim().equals("end")){

fileWriter.close();

break;

}

fileWriter.write(filecon);

fileWriter.flush();

}

serverSocket.close();

} catch (SocketException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

上面是我写的 UDP 服务端,当第二次接收消息的时候,由于第一次数组并没有清空,所以,后面接收的数据就有问题。有谁知道这个怎么解决么?

------解决方案--------------------

while(true)里每次重新

receiveData = new byte[1024];初始化一下存放数据的数组不就可以了

------解决方案--------------------

receivePacket有getLength方法可以获取收到或发出的信息的长度.

在处理getData前先把收到的长度取出来,然后根据长度去读取数组中的数据就可以了.

具体可以查看DatagramPacket的API

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值