java——网络编程

网络编程
IO & 网络 组合编程

网络模型:
OSI模型:
开放系统互联(Open System Interconnection)
网络七层:
// ① 物理层
// 定义网线、网卡等硬件设备的接口规范,通过传输比特流(数据:比特bit),
// 将数据1、0 数模转换 电流强弱 发送数据,将 电流强弱 模数转换 数据1、0
// 接收数据
// ② 数据连路层
// 通过交换机,在不同主机间,利用主机的MAC地址(网卡)将底层数据(帧)进行
// 封装与解封装
// ③ 网络层
// 通过路由器,在不同主机间,利用IP地址将底层数据(数据包)进行封装与解封装
// ④ 传输层
// 定义协议与端口,将下层数据(段)进行分段、传输、重组
// ⑤ 会话层
// 主机间建立起可以通信的通道
// ⑥ 表示层
// 对传输的数据进行解释(加密解密 | 加压解压),进行 机器语言 和
// 人文语言 之间的相互转换
// ⑦ 应用层
// 实体语言(FTP:数据下载 WEB:网页交互 应用:具体应用功能)

// TCP/IP模型:
// 传输控制协议(Transmission Control Protocol)
// 互联网协议(Internet Protocol)
// 网络四层
// ① 主机至网络层 - 物理层、数据链路层
// ② 网际层 - 网络层
// ③ 传输层 - 传输层
// ④ 应用层 - 会话层、表示层、应用层

<<_<<<<_<<<<___<<<<<<<<_<<<<<

信息接收方
// ① 创建接收方
// ② 生成存储报文的数据容器
// ③ 通过对于的数据包大小接收数据
// ④ 应用接收到达数据
// ⑤ 关闭服务

public class MessageReceive {
    public static void main(String[] args) throws IOException{
        System.out.println("接收方开始接收数据了...");
        // ① 创建接收方Socket (注:一定要明确端口号)
        DatagramSocket recevier = new DatagramSocket(10001);
        // ② 生成存储报文的数据容器
        byte[] buf = new byte[1024];
        // ③ 通过对于的数据包大小接收数据
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        // 注:阻塞,等待接收发送方发来的数据
        recevier.receive(packet);
        // ④ 应用接收到达数据
        System.out.println(new String(packet.getData()));
        System.out.println(packet.getPort()  );
        // ⑤ 关闭服务
        recevier.close();
    }
}

域名
// http://www|news|spotrs.sina.com.cn
// 前缀:代表主机服务器(www以万维网指定的服务标准搭建的服务器)
// 主体:域名主体,可以自定义
// 后缀:公司性质(com商业模式企业 edu教育 net 服务 org组织 cn中国 hk香港)

// 域名解析
// hosts文件– IP 与 域名 对应关系
// DNS服务– 指向指定的DNS服务器(带有IP域名解析的服务器)
// 请求宽带供应商 – 进行DNS服务解析

public class Net02 {
    public static void main(String[] args) throws UnknownHostException{
        // 获取本地服务器地址
        InetAddress ia = InetAddress.getLocalHost();
        String ip = ia.getHostAddress();
        System.out.println(ip);
        String local = ia.getHostName();
        System.out.println(local);

        // 通过IP地址获取服务器地址信息
        // 局域网:getHostName可以通过hosts文件配置,默认值同getHostAddress
        InetAddress ad1 = InetAddress.getByName("10.80.16.199");
        System.out.println(ad1.getHostName() + ":" + ad1.getHostAddress());

        // 广域网
        InetAddress[] ads = InetAddress.getAllByName("baidu.com");
        for (InetAddress i : ads) {
            System.out.println(i.getHostName() + ":" + i.getHostAddress());
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值