2014-09-29 4 views
0
내가 UDP를 통해 클라이언트에 데이터를 전송하는 프로그램을 만들어

의 많은 선을 얻기하지만 어떤 이유로는 빈 공간

예를 들어 빈 공간이 많은 선을 얻고있다 :

1 호선 : 윌리엄 셰익스피어 3432 그린 스트리트 그린빌 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

2 번 줄은 무엇입니까? –

+0

빈 공간이 100 개 정도있는 것 같습니다. 그것은 내 전체 프로그램을 엉망으로 만든다. – poutine

답변

0

빈 공간이있는 것으로 언급되는 2 행에는 실제로는 공백이 포함되지 않습니다. 당신은이 때문에 여분의 줄을 얻고 :

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

은 당신이해야 할 것은이 Account 그것에 \n를 추가하기 전에 마지막이 아닌 경우 결정하는 조건을 가지고있다.

temp = per.getName() + " " + per.getAddress() + " " + per.getPhoneNumber(); 
if(it.hasNext()) { 
    temp += "\n"; 
} 

희망이 있습니다. :)

+0

나는 여분의 라인을 얻었을뿐 아니라 무한한 양의 공백을 얻고있다. – poutine

+0

피어 클라이언트가 올바르게 작동합니까? –