Java-获取网络资源大小

这次更新似乎差了好长的时间,不管怎么说都是我的错,我还是安安静静的写吧


获取网络资源的大小,百度解释:网络资源主要是指借助于网络环境可以利用的各种信息资源的总和。网络资源又称网络信息资源。

说白了就是文字、图片、媒体音频等的总和

这一次就来获取这个网页的资源大小。

<span style="font-family: arial, 宋体, sans-serif;">URL url=new URL(sUrl);<span style="white-space:pre">			</span>//sUrl是完整的网址</span>
URLConnection urlConn=url.openConnection();
    urlConn.connect();
    以上为主要的实现方法
    openConnection()它表示 到 URL 所引用的远程对象的连接。然后返回一个网络连接对象
    connect();打开到url引用资源的通信连接

import java.awt.event.*;
import java.net.*;
import javax.swing.*;
public class InternetSizeFrame extends JFrame{
	static JFrame frame=new JFrame();
	static JPanel panel=new JPanel();
	static JLabel label1=new JLabel();
	static JTextField field1=new JTextField();
	static JLabel label2=new JLabel();
	static JTextField field2=new JTextField();
	
	static JButton button_GainInternetSize=new JButton();
	
	public static void main(String[] args){
		frame=new JFrame("Get Internet Source Size");
		panel=new  JPanel();
		
		button_GainInternetSize=auto_Button(panel, button_GainInternetSize,200 , 300, 200, 100, "Get Size", 1);
		label1=auto_Label(panel, label1, 50, 50, 100, 50, "输入网址");
		label2=auto_Label(panel, label2, 50, 100, 100, 50, "网络资源的大小");
		field1=auto_TextField(panel, field1, 150, 50, 200, 50, null);
		field2=auto_TextField(panel, field2, 150, 100, 200, 50, null);
		frame.setSize(500, 500);
		panel.setLayout(null);
		frame.add(panel);
		frame.setVisible(true);
	}
	public static long netSourcesSize(String sUrl)throws Exception{
		
		URL url=new URL(sUrl);
		System.out.println("返回默认的端口号:"+url.getDefaultPort()+"  "
					+"获得URL指定资源的完整文件名:"+url.getFile()+"  "
					+"返回主机名:"+url.getHost()+"  "
					+"返回端口 "+url.getPath()+"  "
					+"返回表示URL中协议的字符串对象:"+url.getProtocol());
		URLConnection urlConn=url.openConnection();
		urlConn.connect();
		return urlConn.getContentLength();
	}
	
	
	public static JLabel auto_Label(JPanel jPanel,JLabel label,int x,int y,int length,int width,String str){
		label=new JLabel();
		label.setText(str);
		label.setBounds(x,y,length,width);
		jPanel.add(label);
		return label;
	}
	public static JTextField auto_TextField(JPanel jPanel,JTextField tf,int x,int y,int length,int width,String str){
		tf=new JTextField();
		tf.setText(str);
		tf.setBounds(x,y,length,width);
		jPanel.add(tf);
		return tf;
	}
	private static JButton auto_Button(JPanel jPanel,JButton btn,int x,int y,int length,int width,String str,int choose){
		btn=new JButton();
		System.out.print("\n"+x+" "+y+" "+length+" "+width+" ");
		btn.setText(str);
		btn.setBounds(x,y,length,width);
		jPanel.add(btn);
		switch (choose) {
		case 1:{
			btn.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					
						String address=field1.getText().trim();
					try {
						long len=netSourcesSize(address);
						field2.setText(String.valueOf(len)+"字节");
						
					} catch (Exception e2) {
						// TODO: handle exception
						e2.printStackTrace();
					}
					
				}
			});
		}break;
		default:{
			btn.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO 自动生成的方法存根
					System.exit(0);
				}
			});
		}
			break;
		}
		return btn;
		
}
}

对于URL类,查看官方文档: 类URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。


URL 可选择指定一个“端口”,它是用于建立到远程主机 TCP 连接的端口号。如果未指定该端口号,则使用协议默认的端口。例如,http协议的默认端口为 80

通过在cmd中查询netstat -na命令

可以看到本机端口的占用情况。

80端口 为listener状态


(PS:LISTENING:正在监听,只有tcp端口才可以这样(如果是udp的话,那么肯定是木马)
ESTABLISHED:正在共享,表示两者连接着(如果135端口这样的话,注意杀毒)
CLOSE_WAIT:有过连接,现在已经结束了 )(引用自:http://blog.sina.com.cn/s/blog_53d3cfea0100nbdq.html)


类 URLConnection

我们都知道HttpURLConnection
每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。
而URLConnetion

抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。通常,创建一个到 URL 的连接需要几个步骤:

openConnection()connect()
对影响到远程资源连接的参数进行操作。与资源交互;查询头字段和内容。
----------------------------> 
时间
  1. 通过在 URL 上调用 openConnection 方法创建连接对象。
  2. 处理设置参数和一般请求属性。
  3. 使用 connect 方法建立到远程对象的实际连接。
  4. 远程对象变为可用。远程对象的头字段和内容变为可访问。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值