这次更新似乎差了好长的时间,不管怎么说都是我的错,我还是安安静静的写吧
获取网络资源的大小,百度解释:网络资源主要是指借助于网络环境可以利用的各种信息资源的总和。网络资源又称网络信息资源。
说白了就是文字、图片、媒体音频等的总和
这一次就来获取这个网页的资源大小。
<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() |
---|---|
对影响到远程资源连接的参数进行操作。 | 与资源交互;查询头字段和内容。 |
时间
- 通过在 URL 上调用
openConnection
方法创建连接对象。 - 处理设置参数和一般请求属性。
- 使用
connect
方法建立到远程对象的实际连接。 - 远程对象变为可用。远程对象的头字段和内容变为可访问。