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();
    }
相关推荐
迷枫7125 小时前
SQL性能排查记录
java·数据库·sql
手握风云-5 小时前
一条消息的旅程:RabbitMQ 学习与实践(四)
学习
渡我白衣5 小时前
深入理解 Transformer:Transformer 究竟是什么?
java·linux·开发语言·c++·人工智能·深度学习·transformer
Tisfy8 小时前
LeetCode 1927.求和游戏:抵消+看最值
java·leetcode·游戏·题解·博弈论
GlueNa2SiO313 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
MC皮蛋侠客13 小时前
DNP3 系列(十二):测试与工具链——模拟器、Wireshark 与一致性测试
网络·wireshark·dnp3
Capricorn198814 小时前
解决全网抄 Karpathy 导致的 LLM Wiki 污染?基于知芽 Notebook Skill 的 raw/ 笔记法排障指南
大数据·论文阅读·人工智能·笔记·论文笔记
秋饼15 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
壹玖玖肆15 小时前
openGauss使用笔记
笔记
宵时待雨15 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp