Java编程基础-网络编程上

网络编程(java.net)

通信协议
计算机网路中实现通信必须有一定的约定即网络协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
通信接口
为了使两个节点之间能进行对话,必须在它们之间建立通信工具(接口),是彼此之间能进行信息交换,包括软件装置(实现节点之间的信息传送)、硬件装置(规定双方通信的约定协议)。
网络分层
网络分层

数据封装
数据封装在
数据拆封
数据拆封

IP地址(InetAddress)
用来标识一个通信实体的地址通信实体可以是计算机、路由器等。比如互联网每个IP地址都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址。路由器是连接两个或多个的通信设备。

public class test01 {
 public static void main(String[] args) throws UnknownHostException{
  //使用getLocalHost创建InetAddress对象 本机
  InetAddress address=InetAddress.getLocalHost();
  System.out.println(address.getHostAddress());//返回IP地址
  System.out.println(address.getHostName());//返回计算机名
  //使用域名得到InetAddress对象
  address=InetAddress.getByName("www.163.com");
  System.out.println(address.getHostAddress());//返回服务器IP地址123.56.138.186
  System.out.println(address.getHostName());//返回
  //根据IP地址得到InetAddress对象
  address=InetAddress.getByName("221.233.240.30");
  System.out.println(address.getHostName());
  //输出的是IP不是域名。IP地址不存在或DNS服务器不允许IP地址和域名相互映射
 }
}

端口(0-65535)
InetSocketAddress
端口

/**
 * 端口
 * 1.区分软件
 * 2.2个字节,0-65535 UDP/TCP
 * 3.同一个协议端口不能冲突
 * 4.定义端口越打越好
 * 5.构造器new InetSocketAddress("域名|地址",端口号);
 * 6.方法:getAddress();getPort();getHostName()
 * @author HUANGYAOHUI
 */
public class test02 {
 public static void main(String[] args) {
   //端口
  InetSocketAddress socketAddress=new InetSocketAddress("127.0.0.1",8080);
  InetSocketAddress socketAddress2=new InetSocketAddress("localhost",9000);
  System.out.println(socketAddress.getHostName());
  System.out.println(socketAddress2.getAddress());
  System.out.println(socketAddress.getPort());
 }
}

URL基本信息
URL

/**
 * URL基本用法
 * 互联网三大基石(URL、HTTP、HTML)
 * 组成:协议+域名|计算机+端口(默认80)+请求资源
 * @author HUANGYAOHUI
 */
public class test03 {
 public static void main(String[] args) throws MalformedURLException {
  URL url=new URL("http://www.baidu.com:80/index.html?username=huang&age=20#a");
  System.out.println("协议:"+url.getProtocol());
  System.out.println("域名|IP:"+url.getHost());
  System.out.println("端口:"+url.getPort());
  System.out.println("请求资源1:"+url.getFile());
  System.out.println("请求资源2:"+url.getPath());
  System.out.println("参数:"+url.getQuery());
  System.out.println("锚点:"+url.getRef());
 }
}

爬虫基本原理

/**
 * 网络爬虫原理
 * 1.获取URL
 * 2.下载资源
 * 3.分析
 * 4.处理
 * @author HUANGYAOHUI
 *
 */
public class test04 {
 public static void main(String[] args) throws Exception {
  //获取URL
  URL url=new URL("https://www.jd.com");
  //下载资源,建立流
  InputStream is=url.openStream();
  BufferedReader bf=new BufferedReader(new InputStreamReader(is,"UTF-8"));
  File file=new File("jd.txt");
  BufferedWriter bw=new BufferedWriter(new FileWriter(file));
  String mag=null;
  while(null!=(mag=bf.readLine())) {
   bw.write(mag);
   bw.newLine();
  }
  bf.close();
  bw.close();
 }
}

遇到不能直接访问的网页要模拟浏览器访问来爬取

/**
 * 网络爬虫原理+模拟浏览器
 * @author HUANGYAOHUI
 *
 */
public class test04 {
 public static void main(String[] args) throws Exception {
  //获取URL
  URL url=new URL("https://www.dianping.com");
  //下载资源
  HttpURLConnection conn=(HttpURLConnection)url.openConnection();
  conn.setRequestMethod("GET");
  conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363");
  BufferedReader bf=new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
  File file=new File("dianping.txt");
  BufferedWriter bw=new BufferedWriter(new FileWriter(file));
  String mag=null;
  while(null!=(mag=bf.readLine())) {
   bw.write(mag);
   bw.newLine();
  }
  bf.close();
  bw.close();
 }
}
发布了14 篇原创文章 · 获赞 11 · 访问量 2775
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览