相关疑难解决方法(0)

Java TCP套接字:数据传输速度很慢

我设置了一个带有ServerSocket的服务器,用客户机连接到它.它们通过交换机直接联网,ping时间<1ms.

现在,我尝试通过套接字的输出流将"大量"数据从客户端推送到服务器.转移0.6Gb需要23分钟.我可以通过scp在几秒钟内推送一个更大的文件.

知道我可能做错了什么吗?我基本上只是循环并在套接字上调用writeInt.速度问题与数据来源无关,即使我只是发送一个常量整数而不是从磁盘读取.

我尝试将两侧的发送和接收缓冲区设置为4Mb,没有骰子.我为读写器使用缓冲流,没有骰子.

我错过了什么吗?

编辑:代码

这是我制作套接字的地方

System.out.println("Connecting to " + hostname);

    serverAddr = InetAddress.getByName(hostname);

    // connect and wait for port assignment
    Socket initialSock = new Socket();
    initialSock.connect(new InetSocketAddress(serverAddr, LDAMaster.LDA_MASTER_PORT));
    int newPort = LDAHelper.readConnectionForwardPacket(new DataInputStream(initialSock.getInputStream()));
    initialSock.close();
    initialSock = null;

    System.out.println("Forwarded to " + newPort);

    // got my new port, connect to it
    sock = new Socket();
    sock.setReceiveBufferSize(RECEIVE_BUFFER_SIZE);
    sock.setSendBufferSize(SEND_BUFFER_SIZE);
    sock.connect(new InetSocketAddress(serverAddr, newPort));

    System.out.println("Connected to " + hostname + ":" + newPort + " with buffers snd=" + sock.getSendBufferSize() + " rcv=" …
Run Code Online (Sandbox Code Playgroud)

java sockets performance networking tcp

15
推荐指数
4
解决办法
4万
查看次数

标签 统计

java ×1

networking ×1

performance ×1

sockets ×1

tcp ×1