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

时间:2016-01-22 11:14:09

标签: java file sockets server

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

客户端SendMethod

ObjectOutputStream

服务器ReceiveMethod

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

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

1 个答案:

答案 0 :(得分:1)

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

而不是悬挂我怀疑它只是花了很长时间。对象/流是多功能的,但对于大量数据而言不是很快。