gpt4 book ai didi

java - 无法使用套接字发送大文件

转载 作者:行者123 更新时间:2023-11-30 07:39:07 26 4
gpt4 key购买 nike

我正在尝试创建一个发送文件的服务器客户端结构,但是当我发送大小超过 200 MB 的大文件时遇到问题。我使用 ObjectOutputStream 和我自己的对象发送它们,该对象在字节数组中包含文件,并且我想使用 Apache commons libary 将其保存在其中。

客户端发送方法

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());

我遇到的确切问题是服务器正在尝试读取文件但挂起并且什么也不做。

最佳答案

只有在发送对象时,使用对象/流通常才是一个好主意。在这种情况下,您将发送一个文件,您可以将其逐步流式传输到服务器。如果您流式传输数据,它可以是任何大小,例如>> 2 GB。

我怀疑这不是挂起,而是花费了很长时间。对象/流用途广泛,但对于大量数据来说速度不是很快。

关于java - 无法使用套接字发送大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com