在使用DatagramSocket类传送一个大文件(这里假设是3M的,而我设的类中的缓冲区只有1M),这样客户端接收到的将只有1M的东西,请问有什么办法处理这类事情?Server类:import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;public class Server {

private static final int CLIENT_PORT_NUM = 7000;
private static final int SERVER_PORT_NUM = 6000;
private static final int MAX_URL_LENGTH = 200;
private static final int LENGTH_PER_TRANSMIT = 1024 * 10;

private DatagramSocket server;
private DatagramSocket urlReceiver;
private String url;

public Server() throws SocketException {
server = new DatagramSocket();
urlReceiver = new DatagramSocket( SERVER_PORT_NUM );
}

private void receiveURL() {
byte[] buff = new byte[ MAX_URL_LENGTH ];
DatagramPacket packet = new DatagramPacket( buff, buff.length );
try {
urlReceiver.receive( packet );
} catch ( IOException e ) {
e.printStackTrace();
}
url = new String( packet.getData() );
}

public void sendData() {
receiveURL();
File outputFile = new File( url );
try {
FileInputStream fis = new FileInputStream( outputFile );

byte[] buff = new byte[ LENGTH_PER_TRANSMIT ];

int len = 0;
while ( ( len = fis.read( buff ) ) != -1 ) { 
DatagramPacket packet = new DatagramPacket( buff, 
len, 
InetAddress.getByName( "localhost" ), 
CLIENT_PORT_NUM );
server.send( packet );
}
} catch ( FileNotFoundException e1 ) {
e1.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
} finally {
if ( server != null ) {
server.close();
}
}
}

public static void main( String[] args ) {
try {
Server server = new Server();
server.sendData();
} catch ( SocketException e ) {
e.printStackTrace();
}
}
}Client类:import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;public class Client {

private static final int CLIENT_PORT_NUM = 7000;
private static final int SERVER_PORT_NUM = 6000;
private static final int LENGTH_PER_TRANSMIT = 8888;

private DatagramSocket client;
private DatagramSocket urlSender;
private String url;

public Client() throws SocketException {
client = new DatagramSocket( CLIENT_PORT_NUM );
urlSender = new DatagramSocket();
}

public void receiveData() {
sendURL();
File outputFile = new File( getDestURL() );
try {
BufferedWriter bw = new BufferedWriter( new FileWriter( outputFile ) );
byte[] buff = new byte[ LENGTH_PER_TRANSMIT ]; DatagramPacket packet = new DatagramPacket( buff, buff.length );
client.receive( packet );
bw.append( new String( packet.getData(), 0, packet.getLength() ) );
}
} catch ( IOException e1 ) {
e1.printStackTrace();
}
}

public String getDestURL() {
Scanner scanner = new Scanner( System.in );
System.out.println( "请输入目标文件的存储URL" );
return scanner.nextLine();
}
private void sendURL() {
getURL();
try {
byte[] buff = url.getBytes();
DatagramPacket packet = new DatagramPacket( 
buff, 
buff.length, 
InetAddress.getByName( "localhost" ) , 
SERVER_PORT_NUM );
urlSender.send( packet );
} catch ( IOException e ) {
e.printStackTrace();
}
}

private void getURL() {
Scanner scanner = new Scanner( System.in );
System.out.println( "请输入指定文件url:");
url = scanner.nextLine();
}

public static void main( String[] args ) {
try {
Client client = new Client();
client.receiveData();
} catch ( SocketException e ) {
e.printStackTrace();
}
}