Java学习笔记_Day37(网络编程)

网络编程:在网络通信协议下,不同计算机上运行的程序,进行的数据传输

常见的软件架构

C/S:在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序

B/S:只需要一个浏览器,用户通过不同的网址,客户访问不同的服务器

BS的优缺点

  • 不需要开发客户端,只需要页面+服务端
  • 用户不需要下载,打开浏览器就能使用
  • 如果应用过大,用户体验收到影响

CS的优缺点

  • 画面精美,用户体验好
  • 需要开发客户端,也需要开发服务端
  • 用户需要下载和更新的时候太麻烦

网络编程三要素

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

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

协议:数据在网络中传输的规则,常见的协议有UDP,TCP,http,https,ftp

1.常见的IP

IPv4:采用32位地址长度,分为4组,点分十进制表示法,总数有限,目前已经用完

127.0.0.1:本机IP,永远只会寻找当前所在本机

  • ipconfig:查看本机IP地址
  • ping:检查网络是否连通

InteAddress类:

IPv6:采用128位地址长度,分成8组,冒分十六进制表示法

2.端口号

两个字节表示的整数,取值范围:0~65535,我们自己使用1024以上的端口号就可以了

一个端口号只能被一个应用程序使用

3.协议

  1. UDP是面向无连接通信协议,速度快,有大小限制一次最多发送64K,数据不安全,容易丢失数据

UDP的三种通信方式:单播,组播,广播

  1. TCP是面向连接的通信协议,速度慢,没有大小限制,数据安全

UDP通信程序

1.发送数据

创建DatagramSocket对象

绑定端口:以后我们就是通过这个端口往外发送

空参:所有可用的端口随机一个进行使用

有参:指定端口号进行绑定

打包数据

释放资源

java 复制代码
public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket();
        String str="hello";
        byte[] buf=str.getBytes();
        InetAddress address=InetAddress.getByName("127.0.0.1");
        int port=10086;
        DatagramPacket dp=new DatagramPacket(buf, buf.length, address, port);
        ds.send(dp);
        ds.close();
    }

2.接受数据

创建DatagramSocket对象

在接受的时候一定要绑定端口,一定要和发送的端口保持一致

接受数据包

解析数据包

释放资源

java 复制代码
 public static void main(String[] args) throws IOException {
        DatagramSocket ds=new DatagramSocket(10086);
        byte[] buf=new byte[1024];
        DatagramPacket dp=new DatagramPacket(buf,buf.length);
        ds.receive(dp);
        byte[] msg=dp.getData();
        int len=dp.getLength();
        InetAddress ip=dp.getAddress();
        int port=dp.getPort();
        System.out.println("接受到数据"+new String(msg,0,len));
        System.out.println("该数据是从"+ip+port+"这个端口发出的");
        ds.close();
    }
相关推荐
人活一口气15 小时前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
像我这样帅的人丶你还17 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射
java·后端
NE_STOP17 小时前
vibe Coding -- 小项目实战
java
未秃头的程序猿1 天前
Java 26正式发布!这3个新特性,让代码量直接减半
java·后端·面试
用户298698530141 天前
Word 文档文本查找与替换的 Java 实现方案
java·后端
阿哉1 天前
Nacos 服务发现源码:藏在背后的两套事件机制,90%的人只讲了一半
java
咖啡八杯1 天前
GoF设计模式——命令模式
java·设计模式·架构
AI人工智能_电脑小能手1 天前
【大白话说Java面试题 第125题】【并发篇】第25题:说说 Java 线程的中断机制
java·后端·面试
Java内核笔记1 天前
Spring Security 源码解析(六)无状态 JWT 实践:Session 共享与自定义过滤器
java·后端
荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python