我制作了一个程序,通过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();
答案 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}}
希望这有帮助! :)