public void receiveXML(){
String xmlString="";
String s="";
int port=DEFAULT_PORT;
byte[] buffer=new byte[MAX_PACKER_SIZE];
try {
server=new DatagramSocket(port);
packet=new DatagramPacket(buffer, buffer.length);
while(true){
try {
server.receive(packet);
s=new String(packet.getData(),0,packet.getLength());
System.out.println(s);
xmlString+=s;
packet.setLength(buffer.length);
} catch (IOException ioe) {
// TODO: handle exception
ioe.printStackTrace(); 
}
}
} catch (SocketException se) {
// TODO: handle exception
se.printStackTrace();  
}
server.close();  //这之后貌似就执行不了了
System.out.println(xmlString);
}
写了一个方法,但是在最后一句System.out.println(xmlString);打印不出结果,貌似后面都执行不了,请问这是为什么?

解决方案 »

  1.   

    在while循环中的System.out.println(s)可以打印,想把接收到的包组织起来,一块打印,请问该如何解决?
      

  2.   

    while(true)你靠异常来跳出循环么?否则不就永远在这循环里面了?
      

  3.   

    你都while(true)了,这是个死循环,你得想办法在合适的时候跳出循环(跳出接收状态)。
      

  4.   

    哦,Mice也在关注。我再说一句,TCP的发送方发送完毕后,接收方能知道发送结束了,因为流会到结束点,或连接会被关掉,
    和TCP不同,UDP的接收方会一直在接收,而并不知道发送已经结束...
      

  5.   

    这个是跳不出=-=  要接受所有数据 用StringBuffer什么的把你拿到的数据整合起来就行