UDP java未发送完整字符串

UDP java未发送完整字符串,java,udp,send,Java,Udp,Send,我正在用java和UDP做一个简单的投票系统。我有三台电脑,一台是服务器,一台添加候选人,另一台用于投票。发送候选者并将其添加到服务器工作正常,但每当我必须将候选者数据发送到第三台计算机时,我的字符串永远不会被完全接收。每个候选对象都存储在一个对象中,我在其中存储每个候选对象的名称[String]和投票[int],所有这些都存储在arraylist中 InetAddress IPres = InetAddress.getByName(IPresimp); String name = candid

我正在用java和UDP做一个简单的投票系统。我有三台电脑,一台是服务器,一台添加候选人,另一台用于投票。发送候选者并将其添加到服务器工作正常,但每当我必须将候选者数据发送到第三台计算机时,我的字符串永远不会被完全接收。每个候选对象都存储在一个对象中,我在其中存储每个候选对象的名称[String]和投票[int],所有这些都存储在arraylist中

InetAddress IPres = InetAddress.getByName(IPresimp);
String name = candidate.get(pos).name;
String posi = Integer.toString(pos);
String candidate = name.concat(":" +posi);
set = new DatagramPacket(candidate.getBytes(), 0, candidaate.getBytes().length, IPres, get.getPort());
socket.send(set);
我是这样发送的,所以每当我将候选人的名字发送到第三台计算机时,我也会发送我当前正在评估的职位,所以例如,我应该发送类似“Obama:2”的内容。但每当我收到包裹时,我只收到“Obama”,我添加到字符串中的任何内容都不会被发送

接收代码:

try {
    byte[] buffer = new byte[400];
    get = new DatagramPacket(buffer, buffer.length);
    socket.receive(get);
    String info = new String(get.getData());
    System.out.println(info);
}
catch (IOException ex) {
    Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} 
问题就在这里,在接收代码中。应该是:

    String info = new String(get.getData(), get.getOffset(), get.getLength());

目前,您忽略了
DatagramPacket
的实际长度,并假设它填满了缓冲区,并将
字符串
填满了垃圾。

此数据太短,无法像您在发送中描述的那样被截断。问题在于接收代码。你是什么意思?下面是我如何接收数据的
try{byte[]buffer=newbyte[400];get=newdatagrampacket(buffer,buffer.length);socket.receive(get);String info=newstring(get.getData());System.out.println(info);}catch(IOException-ex){Logger.getLogger(Client.class.getName()).log(Level.SEVERE,null,ex);}
可能是俄罗斯黑客试图操纵你的选举:-)你是什么意思?我的意思是什么?接收代码中的“问题”是什么?你不明白吗?
    String info = new String(get.getData(), get.getOffset(), get.getLength());