Java网络编程

网络编程

预备知识

  • 要学习网络编程首先要了解一些计算机网络的知识。
    • 计算机网络三大要素:通信网络+服务器+客户端
    • 服务器一般使用Linux、Unix或Windows Server等操作系统
    • 不同于之前的非网络程序,网络编程既要求编写客户端应用程序有要求编写服务器端应用程序
    • 遵循TCP/IP协议
      • 应用层
      • 传输层
      • 网络层
      • 链路层
    • 比起UDP只发送不管对方收到没,TCP事先建立连接双向数据传输更可靠
    • 网络上两台计算机之间的通信,本质上是两个网络应用程序之间的通信
    • 统一资源定位符URL语法 protocol://[:port]path[?query]

Java API 提供的因特网地址类java.net.InetAddress

  • 使用方法

    import java.io.IOException;
    import java.net.*;
    
    public class JInetAddress {
    
    	public static void main(String[] args)  {
    		try {
    			InetAddress local = InetAddress.getLocalHost(); //获取本机的因特网地址对象
    			System.out.println("通过getLoaclHost获得本机因特网网址对象:"+local);
    			System.out.println("获取主机名:"+local.getHostName());
    			System.out.println("获取主机IP地址:"+local.getHostAddress());
    			System.out.println(local.isReachable(1));
    			
    			String cauWeb = "www.cau.edu.cn";  // 中国农业大学网站的主机名
                InetAddress cau = InetAddress.getByName(cauWeb);  // 根据主机名创建对象
    			System.out.println("通过主机名得本机因特网网址对象:"+cau);
    			System.out.println("获取主机名:"+cau.getHostName());
    			System.out.println("获取主机IP地址:"+cau.getHostAddress());
    			
    		}
    		catch (UnknownHostException e){
    			e.printStackTrace();
    		}
    		catch (IOException e) {
    			System.out.println(e.getMessage());
    		}
    	}
    }
    
  • 实例化一个地址对象–通过静态方法 获取本机的因特网地址对象

    InetAddress local = InetAddress.getLocalHost(); 
    
  • 实例化一个地址对象–通过静态方法 根据主机名创建对象

    InetAddress cau = InetAddress.getByName("www.cau.edu.cn"); 
    
  • 注意InetAddress可能会抛出的UnknownHostException是勾选异常,必须处理

  • 调用非静态方法查看主机名

    System.out.println("获取主机名:"+local.getHostName());
    
  • 调用非静态方法查看IP地址

    System.out.println("获取主机IP地址:"+local.getHostAddress());
    
  • 调用非静态方法查看是否连通

    System.out.println(local.isReachable(1));
    
  • 注意InetAddress可能会抛出的IOException是勾选异常,必须处理

java.net.URL 访问网络资源

import java.net.*;
import java.io.*;
public class JWebPageTest {

	public static void main(String[] args) {
        try {  // 处理可能出现的勾选异常IOException
        	String url_str = "http://www.cau.edu.cn/index.html";
        	//String url_str = "https://www.oracle.com/technetwork/java/index.html";
            URL url = new URL(url_str);
            System.out.println("从网页读取信息: " +url);
            InputStreamReader in = new InputStreamReader(url.openStream(),"UTF-8");
      
           
            char cbuf[] = new char[3000]; //读3000字符
            int len = in.read(cbuf);
            for(int n=0;n<len;n++) {
            	System.out.print(cbuf[n]);
            }
            
            System.out.println("......\n以上是从网页读出的信息。");
            System.out.println("字符编码是:"+in.getEncoding());
            in.close();
        }
        catch(IOException e) { e.printStackTrace(); }  // 捕捉并处理勾选异常

	}

}
上一篇:用idea查看本机IP


下一篇:网络编程