【发布时间】:2015-10-21 17:57:14
【问题描述】:
如何在 java 中通过套接字发送长度为 1 MB 的数据缓冲区。 我到底在做什么是我想计算网络的上传速度。为此我想向我用 C 编写的服务器发送 1 MB 数据。
在 C 中接收和发送数据,我们有类似 send and recv 的函数,通过它我们可以通过传递要发送的字节数来发送所需的字节数。
send(connfd , client_message , `Bytes to send`, 0);
但在 java 中,我一次只能发送 1 个字节
int buffer[] = new int[1048576];
PrintWriter output1 = new PrintWriter(socket.getOutputStream(), true);
output1.print(buffer[1]);
所以要发送多个字节,我需要一次又一次地调用上述函数。有什么方法可以让我随时传递 1048576 的整个缓冲区。
【问题讨论】:
-
试试 java.nio 包
-
byte[] array = new byte[ 1 * 1024 * 1024]; OutputStream os = socket.getOuputStream(); os.write(array); os.flush(); os.close(); -
我认为有一个小错误:您的缓冲区将包含 4MB 的数据,因为您有 1024*1024 个 int,而一个 int 本身占用 4byte。