# 网络编程概述

网络编程:网络互联的计算机实现数据交换

# 网络编程三要素

# IP

IP:网络中设备的唯一标识

cmd -> ipconfig:查看本机 ip

cmd -> ping ip 地址:检查网络是否连通

127.0.0.1:回送地址,可以代表本机

# 端口

  1. 端口:设备应用程序的唯一标识
  2. 理论取值:0 ~ 65535
  3. 建议取值:1024 以后,避开知名端口号

# 协议

协议:计算机网络通信和连接的规则

  1. UDP:用户数据报协议
    1. 特点:不需要建立连接,不区分客户端服务器
  2. TCP:传输控制协议
    1. 特点:需要建立连接
    2. 三次握手
      1. 客户端 -> 服务器:连接请求
      2. 服务器 -> 客户端:收到请求
      3. 客户端 -> 服务器:确认连接

# UDP

# UDP 发送数据

# 步骤

// 1. 创建发送端的 Socket 对象 (DatagramSocket)
DatagramSocket ds = new DatagramSocket();
// 2. 创建数据,并且将数据打包
DatagramPacket dp = new DatagramPacket("baozi".getBytes(),"baozi".getBytes().length(),InetAddress.getByName("192.168.1.148"),10010);
// 3. 调用 DatagramSocket 对象的方法发送数据
ds.send(dp);
// 4. 关闭发送端
ds.close();

# DatagramSocket 传输对象

  1. 无参构造: DatagramSocket()
  2. 发送数据包: public void send(DatagramPacket p)
  3. 释放资源: public void close()

# DatagramPacket 数据包

数据包的构造方法: public DatagramPacket(byte buf[], int length, InetAddress address, int port)

  1. byte buf []:字节数组
  2. length:字节长度 ( bus.length )
  3. InetAddress address: InetAddress.getByName(String ip)
  4. port:端口号

# UDP 接收数据

# 步骤

// 1. 创建接收端的 Socket 对象 (DatagramSocket)
DatagramSocket ds = new DatagramSocket(10010);
// 2. 创建一个数据包,用来接收数据
DatagramPacket dp = new DatagramPacket(new byte[1024],1024);
// 3. 调用 DatagramSocket 对象的方法接收数据
ds.receive(dp);
// 4. 解析数据包,并把数据在控制台显示
System.out.println(new String(dp.getData(),0,dp.getLength()));
// 5. 释放资源
ds.close();

# DatagramSocket 传输对象

  1. 带参构造: DatagramSocket(int port)
  2. 接收数据包: public synchronized void receive(DatagramPacket p)

# DatagramPacket 数据包

  1. 空数据包构造方法: public DatagramPacket(byte buf[], int lengtn)
  2. 获取数据: public synchronized byte[] getData()
  3. 获取数据长度: public synchronized int getLength()

# TCP

# TCP 发送数据

# 步骤

Socket s = new Socket("192.168.1.148",10010);
OutputStream os = s.getOutputStream();
os.write("hello".getBytes());
os.close();

# Socket 流套接字

  1. 构造方法: public Socket(String host, int port)
  2. 获取输出流: public OutputStream getOutputStream()

# TCP 接收数据

# 步骤

ServerSocket ss = new ServerSocket(10010);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
System.out.println(new String(bys,0,len));
is.close();
s.close();

# ServerSocket 服务端套接字

  1. 构造方法: public ServerSocket(int port)
  2. 监听,返回 Socket 对象: public Socket accept()

# Socket 流套接字

获取输入流: public InputStream getInputStream()

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Baozi 微信支付

微信支付

Baozi 支付宝

支付宝

Baozi 微信

微信