写一段java代码用于实现不停地收发数据,以此测网速
时间: 2024-03-11 18:47:13 浏览: 15
请问您是想要测试本地网络速度还是远程服务器的网络速度呢?下面是一个简单的 Java 代码示例,可以用于测试本地网络速度。
```java
import java.io.*;
import java.net.*;
public class NetworkSpeedTest {
public static void main(String[] args) {
try {
// 创建一个 ServerSocket 对象,用于监听本地某个端口
ServerSocket serverSocket = new ServerSocket(8888);
// 创建一个 Socket 对象,用于向本地的 ServerSocket 发送数据
Socket clientSocket = new Socket("localhost", 8888);
// 启动一个线程来接收数据
new Thread(new Runnable() {
@Override
public void run() {
try {
// 获取客户端发送的数据流
InputStream inputStream = serverSocket.accept().getInputStream();
byte[] buffer = new byte[1024];
int len;
long startTime = System.currentTimeMillis();
while ((len = inputStream.read(buffer)) != -1) {
// 接收数据并计算接收速度
long endTime = System.currentTimeMillis();
System.out.println("接收速度:" + (len * 1000 / (endTime - startTime)) + " 字节/秒");
startTime = endTime;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
// 启动一个线程来发送数据
new Thread(new Runnable() {
@Override
public void run() {
try {
// 获取客户端发送数据的输出流
OutputStream outputStream = clientSocket.getOutputStream();
byte[] buffer = new byte[1024];
long startTime = System.currentTimeMillis();
while (true) {
// 发送数据并计算发送速度
outputStream.write(buffer);
long endTime = System.currentTimeMillis();
System.out.println("发送速度:" + (buffer.length * 1000 / (endTime - startTime)) + " 字节/秒");
startTime = endTime;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该示例程序创建了一个本地的 ServerSocket 对象,并启动了两个线程,一个线程用于向该 ServerSocket 发送数据,另一个线程用于接收从该 ServerSocket 发送过来的数据,并计算发送和接收速度。您可以根据需要修改代码,例如将本地端口号改为远程服务器的端口号,以测试远程服务器的网络速度。