java 网络编程--Java笔记

目录

一.网络

1.网络

2.ip

3.网络通信协议

二.InetAddress

三.Socket

1.TCP 网络通信

 2.UDP 网络通信


一.网络

1.网络

①.网络:两台或多台设备通过一定物理设备连接起来构成了网络。网络分为

局域网:覆盖范围最小,一个教室或机房

城域网:覆盖范围较大,一个城市

广域网:覆盖范围最大,一个国家甚至一个星球(万维网)

②.网络通信:两台设备之间通过网络实现数据传输,将数据从一台设备传输到另一个设备,(java.net包)

2.ip

①.ip地址:标识网络中的每一台计算机。127.0.0.1为本机地址

②.IP地址的表示形式为:点分十进制 x.x.x.x,每个数范围:0--255

③.ip地址的组成:网络地址 + 主机地址

④.ipv4分类

 ⑤.ipv6:是用于代替 ipv4 的下一代 ip 协议,由于 ipv4 最大的问题 在于网络地址资源有限,严重制约了互联网的应用和发展,ipv6 的出现 不仅能解决网络地址资源数量的问题,也能解决多种接入设备连入互联网的障碍

3.网络通信协议

①.TCP/IP协议(传输控制协议):由网络层的IP协议和传输层的TCP协议组成的

②.TCP 和 UDP

二.InetAddress

1.getLocalHost()获取本机 InetAddress 对象
2.getByName()根据指定主机名/域名获取 ip 地址对象
3.getHostName()获取 InetAddress 对象的主机名
4.getHostAddress ()获取 InetAddress 对象的地址

        // 1.getLocalHost()获取本机 InetAddress 对象
        InetAddress i = InetAddress.getLocalHost();
        System.out.println(i);

        // 2.getByName()根据指定主机名/域名获取 ip 地址对象
        InetAddress.getByName("www.baidu.com");

        // 3.getByName()获取 InetAddress 对象的主机名
        System.out.println(i.getHostName());

        // 4.getHostAddress ()获取 InetAddress 对象的地址
        System.out.println(i.getHostAddress());

三.Socket

①.Socket (套接字)开发网络应用程序被广泛采用

②.通信的两端都要有 Socket ,是两台机器间的端点

③.网络通信其实是 Socket 间的通信

④.Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输

⑤.一般主动发起通信的为 客户端,等待通信的为 服务端

1.TCP 网络通信

当客户端连接到服务端后,客户端是通过一个端口和服务端进行通讯的,这个端口是TCP/IP来分配的,是随机的

netstat 指令:①.netstat-an 可以查看当前主机网络情况(端口监听 和 网络连接)

②.netstat-an | more 可以分页显示

③.Listening表示某个端口在监听,如果有一个客户端连接到该端口,就会显示一条连接信息

        //服务端
        ServerSocket Ss = new ServerSocket(9999);
        System.out.println("aaaaa");
        Socket s = Ss.accept();//接收
        InputStream in = s.getInputStream();

        BufferedInputStream bis = new BufferedInputStream(in);
        BufferedOutputStream bos = new BufferedOutputStream(new                 
                                    FileOutputStream("E:\\qq2.jpg"));

        int i;
        byte[] b = new byte[1024];
        while ((i = bis.read(b)) != -1) {
            bos.write(b, 0, i);
        }

        //关闭流
        Ss.close();
        bos.close();
        s.close();
        //客户端
        Socket s = new Socket(InetAddress.getLocalHost(), 9999);//连接服务端
        System.out.println("bbbbb");

        BufferedInputStream bis = new BufferedInputStream(new                     
                                    FileInputStream("e:\\qq.png"));
        OutputStream oo = s.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(oo);

        int i;
        byte[] b = new byte[1024];
        while ((i = bis.read(b)) != -1) {
            bos.write(b, 0, i);
        }
        bis.close();
        bos.close();
        s.close();

文件:

 2.UDP 网络通信

①.DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议的网络程序

②.UDP 数据通过 DatagramSocket 发送和接收,不保证能够安全到达目的地,也不能确定什么时候可以到达

③.DatagramPacket 对象封装了 UDP 数据,包含了 发送端的 IP 地址 和端口号以及接收端的 IP 地址 和端口号

④.UDP 协议中给出了完整的数据信息,因此无需建立连接

        
        DatagramSocket Ss = new DatagramSocket(9999);

        byte[] b = new byte[1024];
        DatagramPacket dp = new DatagramPacket(b, b.length);
        Ss.receive(dp);

        b = dp.getData();
        String s = new String(b, 0, b.length);
        System.out.println(s);
        Ss.close();

        DatagramSocket Ss = new DatagramSocket(9998);

        byte[] b = "123".getBytes();
        DatagramPacket dp = new DatagramPacket(b, b.length, 
                    InetAddress.getLocalHost(),9999);
        Ss.send(dp);

        Ss.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值