【发布时间】:2016-01-22 11:14:08
【问题描述】:
我正在尝试创建一个发送文件的服务器客户端结构,但是当我发送大小超过 200 MB 的大文件时遇到问题。
我使用ObjectOutputStream 和我自己的对象发送它们,该对象具有字节数组中的文件,并且我想使用Apache commons 库将其保存在其中。
客户端发送方法
try{
Socket s = new Socket(ip, serverPort);
ObjectOutputStream output = new ObjectOutputStream(s.getOutputStream());
FileInputStream file = new FileInputStream(ClientFilePath+"\\"+ClientFileName);
datainBytes = IOUtils.toByteArray(file);
Packet paquete = new Packet(datainBytes,ServerFileDirectory,ClientFileName);
output.writeObject(paquete);
output.close();
} catch (ConnectException e){
//noinspection MagicConstant
JOptionPane.showMessageDialog(contentPane,"Conexion perdida","ERROR",0);
} catch(FileNotFoundException e){
JOptionPane.showMessageDialog(contentPane,"No tienes permisos para movere este archivo","ERROR",0);
} catch(IOException e) {
e.printStackTrace();
}
服务器接收方法
Packet paquete = null;
try {
//ClientIN is the input from the client initialized earlier
paquete = (Packet) ClientIN.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
FileUtils.writeByteArrayToFile(new File(paquete.getFilePathDestiny()+"\\"+paquete.getFileName()), paquete.getData());
我遇到的确切问题是服务器正在尝试读取文件但挂起并且什么也不做。
【问题讨论】:
-
你能发布
ClientIN.readObject()方法吗? -
@FrancescoPitzalis ClientIn 是 Client Socket 的 ObjectInputStream
-
哦,好吧,这似乎是一个自定义静态方法