我有两台无线电脑连接到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)