相关疑难解决方法(0)

使文件传输更高效Java

我有两台无线电脑连接到N无线路由器.这些PC中的每一台都以108-150Mbps的速度连接.

从理论上讲,我应该能够在绝对最佳条件下以13.5MB/s的速度传输到18.75MB/s.

第一台计算机(即发送)使用非常快的SSD,如果我没记错的话,大约100MB/s.CPU使用率也低于20%.

它在656367ms发送了1960273535字节(1.8GB).那是2.8MB/s(108兆比特中的22个).当我打开任务管理器时,我发现只有25-27%的网络连接被使用.

我正在寻找可以使传输更快(通过网络)的任何想法,建议或改进.我想在一个线程上从磁盘缓冲文件并从另一个线程发送缓冲数据,但我不确定这是不是一个好主意.这是SSCCE:

主办:

import java.io.*;
import java.net.*;


public class Host {


    public static void main(String[] args) throws IOException {


        ServerSocket servsock = new ServerSocket(15064);
        Socket sock = servsock.accept();
            long time = System.currentTimeMillis();

        OutputStream out = sock.getOutputStream();
        FileInputStream fileInputStream = new FileInputStream("C:\\complete.rar");

        byte [] buffer = new byte[64*1024]; 
        int bytesRead = 0;
        long totalSent = 0;

        while ( (bytesRead = fileInputStream.read(buffer)) != -1)
        {
            if (bytesRead > 0)
            {   
                out.write(buffer, 0, bytesRead);
                totalSent += bytesRead;
                System.out.println("sent " + …
Run Code Online (Sandbox Code Playgroud)

java sockets networking nio file-transfer

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

file-transfer ×1

java ×1

networking ×1

nio ×1

sockets ×1