当前位置: 代码迷 >> 综合 >> Java测试服务器的上传速度和下载速度
  详细解决方案

Java测试服务器的上传速度和下载速度

热度:40   发布时间:2024-02-10 03:05:52.0

I'm Shendi

最近搞了台服务器,于是就想测试一下网速(与用户之间的速度)

上传速度 客户端发数据给服务端,服务端接收到多少字节就是速度

下载速度 服务端发数据给客户端,客户端接收到多少字节就是速度

避免偏差过大,两个步骤执行时间都为10秒

代码如下

/*** 网速测试* @author Shendi <a href='tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=1711680493'>QQ</a>* @version 1.0*/
public class NetSpeed {static boolean upYes;static boolean downYes;public static void main(String[] args) throws Exception {ServerSocket server = new ServerSocket(80);new Thread(() -> {try {Socket socket = new Socket("服务器的ip,外网ip",80);OutputStream output = socket.getOutputStream();while (true) {if (upYes) break;output.write(1);}InputStream input = socket.getInputStream();int downNum = 0;while (true) {if (downYes) break;input.read();++downNum;}System.out.println("下载速度:" + (downNum / 10 >> 10) + "kb/s");socket.close();} catch (Exception e) {e.printStackTrace();}}).start();Socket socket = server.accept();// 计时 十秒一次new Thread(() -> {try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}upYes = true;try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}downYes=true;}).start();//服务端处理InputStream input = socket.getInputStream();int upNum = 0;while (true) {if (upYes) break;input.read();++upNum;}System.out.println("上传速度:" + (upNum / 10 >> 10) + "kb/s");OutputStream output = socket.getOutputStream();while (true) {if (downYes) break;output.write(1);}server.close();}}