获得一个有很多空位的线

时间:2014-09-29 00:53:43

标签: java sockets io udp

我制作了一个程序,通过UDP向客户端发送数据,但由于某种原因,我得到了一个包含大量空格的行

示例:

第1行:William Shakespeare 3432 Green Street Greenville 450-122-3435

第2行:

你知道我为什么要那些吗?有些东西告诉我它与 buffer.length 有关,但我不确定。

    DatagramSocket socket1 = new DatagramSocket();
    InetAddress IP1 = msg.getAddress();
    int port = msg.getPort();

    Set set = (obj.getMAP()).entrySet();
    Iterator i = set.iterator();
    String total = "";

    while(i.hasNext()) {
        Map.Entry<String, ArrayList<Person>> me = (Map.Entry<String, ArrayList<Person>>)i.next();
        Iterator<Account> it = (me.getValue()).iterator();
        while(it.hasNext())
        {
            Account per = it.next();
            String temp = per.getName() + " " + per.getAddress() + " " + 
                          per.getPhoneNumber() + "\n";                      
            total += temp;
        }
    }       

    byte[] buffer = total.getBytes();
    DatagramPacket reply = new DatagramPacket(buffer, buffer.length, IP1, port);
    socket1.send(reply);
    socket1.close();

1 个答案:

答案 0 :(得分:0)

您引用的具有空格的第2行并不真正包含空格。 由于这个原因,你得到了额外的一行:

temp = per.getName() + " " + per.getAddress() + " " + per.getPhoneNumber() + "\n";
                                                                               ^

在将Account附加到\n之前,您应该做的是确定此temp = per.getName() + " " + per.getAddress() + " " + per.getPhoneNumber(); if(it.hasNext()) { temp += "\n"; } 是否不是最后一个。

{{1}}

希望这有帮助! :)