【Java】网络编程

网络编程

概念:计算机跟计算机之间通过网络进行数据传输,常见的软件架构有BS(网页端,适合移动互联网应用,可随时随地访问的系统)与CS(客户端,适合定制专业化的办公类软件)

三要素

IP 设备在网络中的地址,是唯一标识

端口号 应用程序在设备中的唯一标识

协议 数据在网络中的传输的规则,如UDP、TCP、https、ftp

IP

IPv4(Internet Protocol version 4 互联网通信协议第四版)

目前主流方案,已全部用完(最多只有2 ^ 32)

采用32位地址长度,分为4组

IPv6(Internet Protocol version 6 互联网通信协议第六版)

为解决IPv4不够用而出现,最多有2 ^ 128个

127.0.0.1,是回送地址也称本地回环地址,永远只会寻找当前所在本机

常见的cmd命令

ipconfig:查看本机IP地址

ping:检查网络是否畅通

端口号

应用程序在设备中的唯一标识,由两个字节表示的整数,取值范围:0~65535

其中0~1023之间的端口号用于一些知名的网络服务或应用,一个端口号只能被一个应用程序使用

协议

计算机网络中,连接和通信的规则被称为网络通信协议

UDP协议

用户数据报协议,是面向无连接的通信协议,速度快,有大小限制,一次最多发送64k,数据不安全,易丢失

public static void main(String[] args) throws IOException {
        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();
        //2.打包数据
        String s = "Hello~";
        byte[] bytes = s.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 10086;
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
        //3.发送数据
        ds.send(dp);
        //4.释放资源
        ds.close();
    }

接收数据

public static void main(String[] args) throws IOException {
        DatagramSocket ds = new DatagramSocket(10086);
        byte[] bytes = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
        ds.receive(dp);
        byte[] data = dp.getData();
        int len = dp.getLength();
        InetAddress address = dp.getAddress();
        int port = dp.getPort();
        System.out.println(new String(data, data.length));
        System.out.println(len);
        System.out.println(address);
        System.out.println(port);
        ds.close();
    }

TCP协议

传输控制协议,面向连接的通信协议,速度慢,无大小限制,数据安全

创建DatagramSocket对象,空参表示在所有可用端口中随机一个使用,有参表示指定端口进行绑定

发送数据

  1. 创建客户端的Socket对象(Socket)与指定服务端连接

Socket(String host, int port)

  1. 获取输出流,写数据

OutputStream getOutputStream()

  1. 释放资源

void close()

public static void main(String[] args) throws IOException {
        Socket s = new Socket("127.0.0.1", 10086);
        OutputStream os = s.getOutputStream();
        os.write("abc".getBytes());
        os.close();
        s.close();
    }
  1. 创建服务器端的Socket对象(ServerSocket)

ServerSocket(int port)

  1. 监听客户端连接,返回一个Socket对象

Socket accept()

  1. 获取输入流,读数据,并把数据显示在控制台

InputStream getInputStream()

  1. 释放资源

void close()

public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10086);
        Socket s = ss.accept();
        InputStream is = s.getInputStream();
        int b;
        while ((b = is.read()) != -1) {
            System.out.println((char) b);
        }
        is.close();
        ss.close();
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊呜冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值