Java_常用API_2_网络编程

网络编程

java.net 包下 API 。

IP 对象

  • Java 中,使用 InetAddress 类对 IP ( Internet Protocol )地址进行描述,它的常用方法如下:

    方法说明
    static InetAddress getByName(String host)由主机名得到它的IP地址包装对象(主机名可以是机器名称,也可以是IP地址)
    String getHostName()返回主机名
    String getHostAddress()返回文本形式的IP地址字符串

UDP

  1. UDP 概述:

    • 全称 User Datagram Protocol ,即用户数据报协议。

    • 它是无连接通信协议,即,在数据传输时,数据的发送端和接收端不建立逻辑连接。

      简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    • 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输,即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

    • 但由于 UDP 的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用 UDP 协议。

  2. Java 提供 DatagramPacket 类来封装 UDP 协议数据包:

    • 常用构造方法:

      构造方法说明
      DatagramPacket(byte[] buf,int len,InetAddress add,int port)构造一个数据报包对象,用来发送长度为 len 的数据包到指定主机的指定端口上
      DatagramPacket(byte[] buf, int len)构造一个数据报包对象,用来接收长度为 len 的数据包
    • 常用方法:

      方法说明
      byte[] getData()返回数据缓冲区(缓冲区没满则会补 0)
      int getLength()返回发送或接收的数据的实际长度
  3. Java 提供 DatagramSocket 类来封装 UDP 协议数据套接字:

    • 常用构造方法:

      构造方法说明
      DatagramSocket()构造一个数据报套接字对象,并将其绑定到本机所有可用的端口
    • 常用方法:

      方法说明
      void send(DatagramPacket p)从此套接字发送一个数据报包
      void receive(DatagramPacket p)从此套接字接受一个数据报包
      void close()关闭此数据报套接字
  4. 基本步骤:

    • 发送数据:
      • 创建发送端的 Socket 对象: DatagramSocket ds = new DatagramSocket()
      • 创建数据,并把数据打包: DatagramPacket dp = new DatagramPacket(...)
      • 调用发送端的 Socket 对象的方法发送数据: ds.send(dp)
      • 关闭发送端: ds.close()
    • 接收数据:
      • 创建接收端的 Socket 对象: DatagramSocket ds = new DatagramSocket()
      • 创建一个数据包,用于接收数据: DatagramPacket dp = new DatagramPacket(...)
      • 调用接收端的 Socket 对象的方法接收数据: ds.receive(dp)
      • 解析数据包: dp.getData()dp.getLength()
      • 关闭接收端: ds.close()

TCP

  1. TCP 概述:

    • 全称 Transmission Control Protocol ,即传输控制协议。

    • 它是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

    • 在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。

      TCP 协议中,在发送数据的准备阶段,客户端与服务器之间进行三次交互,以保证连接的可靠:

      • 第一次握手:客户端向服务器端发出连接请求,等待服务器确认;
      • 第二次握手:服务器端向客户端回送一个响应,通知客户端收到了连接请求;
      • 第三次握手:客户端再次向服务器端发送确认信息,确认连接。
  2. Java对基于 TCP 协议的网络传输提供了良好的封装,使用 Socket 对象来代表两端的通信端口,并通过 Socket 产生 IO 流来进行网络通信:

    本地Java内存
    Socket对象
    数据
    数据
    Java其它运行内容
    IO流对象
    网络位置
  3. Java为客户端提供了 Socket 类,为服务器端提供了 ServerSocket 类来封装 TCP 协议的套接字:

    • 客户端:

      构造方法说明
      Socket(InetAddress address,int port)创建流套接字并将其连接到指定 IP 指定端口号
      Socket(String host, int port)创建流套接字并将其连接到指定主机上的指定端口号
      常用方法说明
      InputStream getInputStream()返回此套接字的输入流
      OutputStream getOutputStream()返回此套接字的输出流
    • 服务器端:

      构造方法说明
      ServerSocket(int port)创建绑定指定端口的服务器套接字对象
      常用方法说明
      Socket accept()监听要连接到此的套接字,监听到时就接受它,返回服务器与它连接的套接字对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值