网络实例

		java网络实例
1 获取指定主机的ip地址:
		package cn.com;

		import java.net.InetAddress;
		import java.net.UnknownHostException;

		public class Test1 {
			public static void main(String[] args) throws UnknownHostException {
				//本机:
				InetAddress address=InetAddress.getLocalHost();
				System.out.println(address.getHostName());
				System.out.println(address.getHostAddress());		
				/**
				 * 网络:
				 * 注意:必须是www.baidu.com  不能是http:...,也不能是www.baidu.com/
				 */
				
				InetAddress address1=InetAddress.getByName("www.runoob.com");
				InetAddress address2=InetAddress.getByName("www.baidu.com");
				System.out.println(address1.getHostName());
				System.out.println(address1.getHostAddress());
				System.out.println(address2.getHostName());
				System.out.println(address2.getHostAddress());
			}
		}

		代码结果:
		
		PC-20180615DRYD
		192.168.0.103
		www.runoob.com
		171.8.242.179
		www.baidu.com
		220.181.112.244


2:获取指定文件大小:
package cn.com;

import java.net.URL;
import java.net.URLConnection;

		public class Test3 {
			public static void main(String[] args) {
				//获取指定文件大小:
				String s="http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png";
				try {
					URL u=new URL(s);
					URLConnection coon=u.openConnection();
					int size=coon.getContentLength();
					if(size<0) {
						System.out.println("无法获取文件大小");
					}else {
						System.out.println("文件大小"+size);
					}
					coon.getInputStream().close();
				}catch(Exception e) {
					e.printStackTrace();
				}
				
			}

		}

代码结果:文件大小4261byte

3:查看主机指定文件的最后修改时间
		package cn.com;

		import java.net.URL;
		import java.net.URLConnection;
		import java.text.SimpleDateFormat;

		public class Test5 {
			public static void main(String[] args) {
				try {
					URL u=new URL("http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png");
					URLConnection coon=u.openConnection();
					coon.setUseCaches(false);
					long date=coon.getLastModified();
					SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					System.out.println(sdf.format(date));
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		}
代码结果:2017-10-28 14:01:29

4:使用Socket连接到指定主机

注意事项:先运行Test ,在运行Test6
		package cn.com;

		import java.net.InetAddress;
		import java.net.Socket;

		public class Test6 {
			public static void main(String[] args) {
				String host="192.168.0.104";
				int port = 330;
				try {
					Socket socket=new Socket(host, port);
					InetAddress addr=socket.getInetAddress();
					System.out.println("链接到"+addr);
					socket.close();
				} catch (Exception e) {
					System.out.println("无法连接");
					e.printStackTrace();
				}	
			}

		}
输出结果:链接到/192.168.0.104

附:另外一台电脑上的代码:
public class Test{
	public static void main(String args[]){
		try{
			ServerSocket ss=new ServerSocket(330);
			System.out.println("服务器已开启,请链接");
			Socket s=ss.accept();
			System.out.println("链接成功");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
输出结果:
服务器已开启,请链接
链接成功

5:网页抓取

		package cn.com;

		import java.io.BufferedReader;
		import java.io.BufferedWriter;
		import java.io.FileWriter;
		import java.io.InputStreamReader;
		import java.net.URL;

		public class Test {
			public static void main(String[] args) {
				try {
					URL url=new URL("http://www.baidu.com");
					BufferedReader reader=new BufferedReader(new InputStreamReader(url.openStream()));
					BufferedWriter writer=new BufferedWriter(new FileWriter("D:/test/data.html"));
					String line;
					while((line=reader.readLine())!=null) {
						System.out.println(line);
						writer.write(line);
						writer.newLine();
						
					}
					writer.close();
					reader.close();
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
		}
结果:内容较多,自己直接看吧!注意自己的存储位置。

6:获取URL响应头的日期信息:
		package cn.com;

		import java.net.HttpURLConnection;
		import java.net.URL;
		import java.text.SimpleDateFormat;
		import java.util.Date;

		public class Test {
			public static void main(String[] args) {
				try {
					URL url=new URL("http://www.runoob.com");
					HttpURLConnection coon=(HttpURLConnection)url.openConnection();
					long time=coon.getDate();
					SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					System.out.println(sdf.format(time));	
					System.out.println(new Date(time));
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
		}
结果:
2018-07-06 14:40:39
Fri Jul 06 14:40:39 CST 2018

7:获取URL响应头信息
		package cn.com;

		import java.net.URL;
		import java.net.URLConnection;
		import java.util.Map;

		public class Test {
			public static void main(String[] args) {
				try {
					URL url=new URL("http://www.runoob.com");
					URLConnection coon=url.openConnection();
					Map map=coon.getHeaderFields();
					for(Object s:map.keySet()) {
						System.out.println(s+" "+map.get(s));
					}
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
		}
结果:
Transfer-Encoding [chunked]
null [HTTP/1.1 200 OK]
X-Cache [HIT TCP_MEM_HIT dirn:9:788355911 mlen:-1]
Server [Tengine]
X-Swift-CacheTime [86400]
Connection [keep-alive]
EagleId [de551ac715308698094418675e]
Date [Fri, 06 Jul 2018 06:40:39 GMT]
Via [cache13.l2st3-1[0,200-0,H], cache35.l2st3-1[30,0], kunlun4.cn257[0,200-0,H], kunlun7.cn257[1,0]]
Timing-Allow-Origin [*]
Vary [Accept-Encoding, Accept-Encoding, Accept-Encoding]
X-Swift-SaveTime [Fri, 06 Jul 2018 08:07:44 GMT]
Age [10570]
X-Powered-By [HHVM/3.22.1]
Content-Type [text/html]

8:解析URL
		package cn.com;

		import java.net.URL;

		public class Test {
			public static void main(String[] args) {
				try {
					URL url = new URL("http://www.runoob.com");
					System.out.println("url是:" + url.toString());
					System.out.println("协议是:"+ url.getProtocol());
					System.out.println("文件名是:"+url.getFile());
					System.out.println("主机是:"+url.getHost());
					System.out.println("路径是:"+url.getPath());
					System.out.println("端口号是:"+url.getPort());
					System.out.println("默认端口号是:"+url.getDefaultPort());
					System.out.println("************************************************");
					URL ur2 = new URL("http://www.runoob.com/html/html-tutorial.html");
					System.out.println("ur2是:" + ur2.toString());
					System.out.println("协议是:"+ ur2.getProtocol());
					System.out.println("文件名是:"+ur2.getFile());
					System.out.println("主机是:"+ur2.getHost());
					System.out.println("路径是:"+ur2.getPath());
					System.out.println("端口号是:"+ur2.getPort());
					System.out.println("默认端口号是:"+ur2.getDefaultPort());
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		}
结果:
url是:http://www.runoob.com
协议是:http
文件名是:
主机是:www.runoob.com
路径是:
端口号是:-1
默认端口号是:80
************************************************
ur2是:http://www.runoob.com/html/html-tutorial.html
协议是:http
文件名是:/html/html-tutorial.html
主机是:www.runoob.com
路径是:/html/html-tutorial.html
端口号是:-1
默认端口号是:80

9:实例:ServerSocket 和Socket 通信实例
这个首先启动:
		package cn.com;

		import java.net.ServerSocket;
		import java.net.Socket;

		public class Server {
			public static void main(String[] args) {
				try {
					ServerSocket ss = new ServerSocket(4546);
					System.out.println("服务器已经启动");
					Socket s = ss.accept();
					System.out.println("客户端已经链接");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
结果:
服务器已经启动
客户端已经链接

		这个第二个启动:
		package cn.com;

		import java.net.InetAddress;
		import java.net.Socket;

		public class Client {
			public static void main(String[] args) {
				try {
					InetAddress address = InetAddress.getLocalHost();
					Socket s = new Socket(address, 4546);
					System.out.println("已连接,成功");
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		}
结果:已连接,成功

上面是核心代码,下面是丰满后的代码
*************************************************************************
		package cn.com;

		import java.io.BufferedReader;
		import java.io.BufferedWriter;
		import java.io.InputStreamReader;
		import java.io.OutputStreamWriter;
		import java.net.ServerSocket;
		import java.net.Socket;

		public class Server {
			public static void main(String[] args) {
				try {
					ServerSocket ss = new ServerSocket(4546);
					System.out.println("服务器已经启动");
					Socket s = ss.accept();
					System.out.println("客户端已经链接");
					System.out.println("请发送信息");
					BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
					String string = reader.readLine();
					System.out.println(string);
					BufferedWriter write = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
					write.write("欢迎你的加入:\n");
					write.flush();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
结果:
服务器已经启动
客户端已经链接
请发送信息
很高兴加入这个大家庭

		package cn.com;

		import java.io.BufferedReader;
		import java.io.BufferedWriter;
		import java.io.InputStreamReader;
		import java.io.OutputStreamWriter;
		import java.net.InetAddress;
		import java.net.Socket;

		public class Client {
			public static void main(String[] args) {
				try {
					InetAddress address = InetAddress.getLocalHost();
					Socket s = new Socket(address, 4546);
					System.out.println("已连接,成功");
					BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
					writer.write("很高兴加入这个大家庭\n");
					writer.flush();
					BufferedReader reader=new BufferedReader(new InputStreamReader(s.getInputStream()));
					String string=reader.readLine();
						System.out.println(string);
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		}
结果:
已连接,成功
欢迎你的加入:

猜你喜欢

转载自blog.csdn.net/weixin_42321963/article/details/80945748