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();}}