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();
}
}
}
结果:
已连接,成功
欢迎你的加入: