java中的网络编程

网络基础

五层协议的体系结构
应用层 :应用层是 体系结构中的最高层。应用层的任务是通过应用进程之间的交互来完成特定网络应用。这里的进程指的是主机正在运行的程序。对于不同的网络应用需要有不同的应用层协议(域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议),我们把应用层交互的数据单元称为报文
运输层: 运输层的任务就是负责向两台主机进程之间的通信提供通用的数据传输服务,所谓“通用”并不是指针对某个特定的网络应用,而是多个应用可以使用同一个运输层服务,(复用和分用)。主要使用两种不同的协议 1.传输控制协议TCP,面向连接的,可靠的数据传输服务。传输的数据单位是报文段。2.用户数数据报协议UDP,提供无连接的尽最大努力的数据传输服务,传输的数据单位是用户数据报
网络层:网络层负责为分组交换网上的的不同主机提供通信服务,在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。
数据链路层:在两台主机之间的数据传输总是在一段一段的链路上传送的,这就需要专门的链路层协议,在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报封装成帧,在两个相邻结点间的链路上传送帧。每一帧包含数据和必要的控制信息(如同步信息,地址信息,差错控制)
物理层:物理层上传输数据的单位是比特

1.InetAddress 类
继承关系及其特性:

  • public class InetAddress extends Objectimplements Serializable
  • 此类表示互联网协议(IP)地址。
  • 该类没有构造方法,需要调用静态方法获得该类对象

成员方法

  • getAddress()
      返回此 InetAddress 对象的原始IP地址

  • getByName(String host)
      在给定主机名的情况下确定主机的IP地址

  • getHostAddress()
      返回IP地址字符串(以文本表现形式)

  • getHostName()
      获取此IP地址的主机名

  • getLocalHost()
      返回本地主机

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

public class MyTest {
    public static void main(String[] args) throws UnknownHostException {
        //InetAdress类表示IP地址
        //获取本机IP
        InetAddress ip = InetAddress.getLocalHost();
        System.out.println(ip);
        //获取主机名
        String hostName = ip.getHostName();
        System.out.println(hostName);
        //获取IP地址
        String ip1 = ip.getHostAddress();
        System.out.println(ip1);
        //在给定主机名的情况下确定主机的IP 地址
        InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
        //获取此IP地址的主机名
        String hostName1 = inetAddress.getHostName();
        //返回IP地址字符串
        String hostAddress = inetAddress.getHostAddress();
        System.out.println(hostName1);
        System.out.println(hostAddress);
    }
}

2.InetScoketAddress 类
继承关系

  • public class InetSocketAddress extends SocketAddress

此类实现IP套接字地址(IP地址 + 端口号)。它还可以时一个对( 主机名 + 端口号),在此情况下,将尝试解析主机名。

构造方法

  • InetSocketAddress(InetAddress addr, int port)
      根据 IP 地址和端口号创建套接字地址

  • InetSocketAddress(String hostname, int port)
      根据主机名和端口号创建套接字地址

  • InetSocketAddress(int port)
      创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。

成员方法

  • getAddress()
      获取 InetAddress
  • String getHostName()
       获取 hostname。
  • int getPort()
       获取端口号。
import java.net.InetAddress;
import java.net.InetSocketAddress;

public class MyTest3 {
    public static void main(String[] args) {
    
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1",8082);
        //获取端口
        int port = inetSocketAddress.getPort();
        System.out.println(port);
        //获取hostname
        String hostName = inetSocketAddress.getHostName();
        System.out.println(hostName);
        //获取InetAddress对象(IP对象)
        InetAddress address = inetSocketAddress.getAddress();
        System.out.println(address);    
    }
}

3.URL 类
继承关系及其特性:

  • public final class URLextends Objectimplements Serializable
  • 类 URL 代表一个统一资源定位符,它是指向互联网“资源“的指针。资源可以是简单的文件或目录也可以是对更为复杂的对象的引用,例如对数据库的查询。
  • http://www.socs.uts.edu.au/MosaicDocs-old/url-primer.html
    通常 URL 可分成四个部分:上面协议的是 http(超文本传输协议),主机域名或IP地址,端口号。
    构造方法
  • URL(String spec)
       根据 String 表示形式创建 URL 对象。
  • URL(String protocol, String host, int port, String file)
       根据指定 protocol、host、port 号和 file 创建 URL 对象
  • List itemURL(String protocol, String host, String file)
       根据指定的 protocol 名称、host 名称和 file 名称创建 URL

成员方法

  • getAuthority()
       获取此 URL 的授权部分。

  • getAuthority()
       获取此 URL 的授权部分。

  • getContent(Class[] classes)
       获取此 URL 的内容

  • getFile()
       获取此 URL 的文件名。

  • getHost()
       获取此 URL 的主机名(如果适用)。

  • getDefaultPort()
       获取与此 URL 关联协议的默认端口号。

  • getPath()
       获取此 URL 的路径部分。

  • getPort()
       获取此 URL 的端口号。

  • getProtocol()
       获取此 URL 的协议名称

  • getRef()
       获取此 URL 的锚点(也称为“引用”)。

import java.io.IOException;
import java.net.URL;

public class MyTest4 {
    public static void main(String[] args) throws IOException {
        //类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
        //协议,主机域名或IP,端口号,资源文件名
        URL url = new URL("https://mp.csdn.net/mdeditor/90614805#");
        //获取此URL的授权部分
        String authority = url.getAuthority();
        System.out.println(authority);
        //获取此URL的内容
        Object content = url.getContent();
        System.out.println(content);
        //获取此URL的文件名
        String file = url.getFile();
        System.out.println(file);
        //获取此URL的路径部分
        String path = url.getPath();
        System.out.println(path);
        //获取此URL的端口号
        int port = url.getPort();
        System.out.println(port);
        //获取此URL的默认端口号
        int defaultPort = url.getDefaultPort();
        System.out.println(defaultPort);
        //获取此URL的协议名称
        String protocol = url.getProtocol();
        System.out.println(protocol);
        //获取此URL的uesrInfo部分
        String userInfo = url.getUserInfo();
        System.out.println(userInfo);
        //获取此URL的主机名(如果适用)
        String host = url.getHost();
        System.out.println(host);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值