Java测试网络连接速度源代码 / Java测试网络连接速度源代码

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

public class Network {

	private static boolean flag;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		download();
	}

	/**
	 * 测试网络下载速度(测试网络速度)
	 * @return 返回真表示网络连接正常 返回假表示网络连接异常或超时
	 */
	public synchronized static boolean download() {
		flag = false;
		
		//定义子线程 监控是否超时
		new Thread(new Runnable() {
			public void run() {
				int times = 0;
				while(true){
					times++;
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					//设置超时 5秒后超时跳出
					if(times >= 50){
						flag = true;
						break;
					}
				}
			}
		}).start();
		
		int bytesum = 0;
		int byteread = 0;

		URL url = null;
		try {
			/*
			 * 链接地址可以是任何可以访问的网络链接 用于下载文件 测试下载速度
			 * 如果下载文件内容大小太小 测试结果可能偏低
			 */
			url = new URL("https://mat1.gtimg.com/libs/jquery/1.12.0/jquery.min.js");
		} catch (MalformedURLException e1) {
			e1.printStackTrace();
		}

		try {
			URLConnection conn = url.openConnection();
			InputStream inStream = conn.getInputStream();
			
			byte[] buffer = new byte[1024];
			System.out.println("开始时间:" + new Date().getTime());
			long startTime = System.currentTimeMillis();
			while ((byteread = inStream.read(buffer)) != -1) {
				bytesum += byteread;
				System.out.println(bytesum);
				if(flag == true){
					break;
				}
			}
			
			if(flag == true){
				System.out.println("下载超时!");
				return false;
			}
			
			System.out.println("文件大小:" + (float)bytesum / 1024 + "Kb");
			System.out.println("结束时间:" + new Date().getTime());
			long endTime = System.currentTimeMillis();
			System.out.println("耗时:" + String.valueOf((float)(endTime - startTime)/1000) + "秒");
			
			float down_sd = bytesum/(endTime - startTime)*1000/1024;
			System.out.println("下载速度:" + down_sd + "Kb");
			
			return true;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
}

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以简洁易读的形式呈现数据,被广泛应用于前后端数据交互、API设计等领域。JSON格式由键值对构成,使用大括号表示对象,使用方括号表示数组。

在JSON格式中,键必须为字符串类型,值可以是字符串、数字、布尔值、数组、对象或null。JSON格式具有很好的可读性,也方便机器解析和生成。与XML相比,JSON格式更为紧凑、易读、易解析。

JSON格式也有一些局限性。JSON不支持注释,也不支持原始数据类型。在序列化和反序列化时,如果JSON中存在循环引用,将会导致死循环。

为了更好地理解JSON格式,我们需要深入了解它的结构和语法规则。下面是一个简单的JSON示例:

json Copy code

{

"name": "张三",

"age": 18,

"isMale": true,

"hobbies": ["篮球", "足球", "音乐"],

"address": {

"province": "广东",

"city": "深圳",

"district": "南山区"

}

}

在这个示例中,我们定义了一个名为“张三”的人物对象,包含了姓名、年龄、性别、爱好和住址等信息。其中,“name”、“age”、“isMale”等键名均为字符串类型,对应的值可以是字符串、数字、布尔值、数组或对象。在“hobbies”键中,我们定义了一个包含三个元素的数组。在“address”键中,我们定义了一个包含三个键值对的对象。

总之,JSON格式是一种轻量级、易读、易解析的数据交换格式,具有广泛的应用场景和优势。深入了解JSON格式的结构和语法规则,对于开发者来说是非常有益的。