我用UDP传文件while(inFromFile.read(sendb) != -1){
DatagramPacket sendPacket = new DatagramPacket(sendb, sendb.length, ipAddr, port);
serverSocket.send(sendPacket);
}
其中,byte[] sendb = new byte[1024];那我应该怎么接收?byte[] b = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(b, b.length);
while(true){
        clientSocket.receive(recvPacket);
}我这样接收,却不知道怎么判断接收完毕。望指教!

解决方案 »

  1.   

    boolean flag=true;
    DatagramSocket socket=new DatagramSocket(4567); 
    byte[] b = new byte[1024];
    DatagramPacket recvPacket = new DatagramPacket(b, b.length);
    //这里可以起另一个线程来将flag设置为false,或者你定义一些相关的事件发生,执行方法把flag设置为false
    while(flag){
            socket.receive(recvPacket);
    }
      

  2.   

    给你两个代码,这样就可以实现了:
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;public class UdpTest1
    {
    public static void main(String[] args) throws Exception
    {
    DatagramSocket socket = new DatagramSocket(); String str = "hello world"; DatagramPacket packet = new DatagramPacket(str.getBytes(),
    str.length(), InetAddress.getByName("localhost"), 7000);

    socket.send(packet);

    byte[] buffer = new byte[1000];

    DatagramPacket packet2 = new DatagramPacket(buffer,100);

    socket.receive(packet2);

    System.out.println(new String(buffer, 0, packet2.getLength()));

    socket.close();
    }
    }
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;public class UdpTest2

    public static void main(String[] args) throws Exception
    {
    DatagramSocket socket = new DatagramSocket(7000); byte[] buffer = new byte[1000]; DatagramPacket packet = new DatagramPacket(buffer, 1000); socket.receive(packet); System.out.println(new String(buffer, 0, packet.getLength())); String str = "welcome"; DatagramPacket packet2 = new DatagramPacket(str.getBytes(),
    str.length(), packet.getAddress(), packet.getPort());

    socket.send(packet2);

    socket.close();
    }
    }
      

  3.   

    UDP传输,接收时不一定按顺序的,所以需给每个包打个标记,
    服务器根据这些标记知道传输完成了没有