Bootstrap

网络编程套接字

目录

一. 网络编程基本概念

1. 什么是网络编程

2. 发送端和接收端

3. 请求和响应

4. 客户端和服务端

二. Socket 套接字

1. UDP

(1) DatagramSocket

<1> DatagaramSocket 常用构造方法

<2> DatagramSocket 常用方法

(2) DatagramPacket

<1> DatagramPacket 常用构造方法

<2> DatagramPacket 常用方法

2. TCP

(1) SeverSocket

<1> SeverSocket 常用构造方法

<2> SeverSocket 常用方法

 ​编辑

(2) Socket

<1> Socket 常用构造方法

<2> Socket 常用方法


一. 网络编程基本概念

1. 什么是网络编程

网络编程, 是指网络上的主机, 在不同进程之间, 通过编程的方式实现网络通信 (网络数据传输) 的过程.

[注]: 网络通信只要满足不同进程就可以. 不一定必须要不同主机, 同一主机的不同进程之间也可以实现网络通信.

2. 发送端和接收端

发送端: 即数据的发送方进程. 发送端主机就是网络通信中的源主机.

接收端: 即数据的接收方进程. 接收端主机就是网络通信中的目的主机.

3. 请求和响应

一般来说, 客户端获取一个网络资源, 涉及到两次网络数据传输.

第一次: 请求数据的发送.

第二次: 响应数据的接收.

4. 客户端和服务端

客户端: 请求服务的一方.

服务端: 提供服务的一方.

二. Socket 套接字

Socket套接字可以理解为网络通信中的基本操作单元. 它可以看做是传输层提供给应用层的一种API, 应用层所有网络通信都是基于socket实现的. 基于socket进行的网络程序开发就是网络编程.

根据传输协议的不同, socket又分为两种: 

  • 流套接字 : 使用TCP协议 (Transmission Control Protocol "传输控制协议").

        TCP的特点是: 有连接, 可靠传输, 面向字节流, 全双工.

  • 数据报套接字: 使用UDP协议 (User Datagram Protocol "用户数据报协议")

        UDP的特点是: 无连接, 不可靠传输, 面向数据包, 全双工.

(1) 有连接 / 无连接 : 指的是如果通信双方保存了对端的信息, 就叫做有连接; 如果通信双方没有保存对端的信息, 就叫做无连接.

(2) 可靠 / 不可靠 传输: 这里的可靠并不是指100%能够传输到对端, 而是尽可能保证数据能够到达对端; 而不可靠传输就是完全不考虑数据能否到达对端.

(3) 面向字节流 / 面向数据报 : 面向字节流 --> 传输数据的基本单位是字节; 面向数据报 --> 传输数据的基本单位是数据报.

(4) 全双工 / 半双工 : 全双工指的是一个通信链路可以发送数据, 也可以接收数据 (双向通信); 半双工指的是一个通信链路只能发送数据或只能接收数据 (单向通信).

1. UDP

(1) DatagramSocket
<1> DatagaramSocket 常用构造方法

无参数的构造方法 --> 构造一个Socket对象, 绑定的端口由系统指定.

 

带一个参数port的构造方法 --> 构造一个Socket对象, 并绑定指定端口. 

通过DatagramSocket 类可以创建一个socket对象, 程序员通过socket对象就能间接操作网卡.

<2> DatagramSocket 常用方法

receive方法, 传入一个DatagramPacket类型的参数, 表示接收此数据报.

send方法, 传入一个DatagramPacket类型的参数, 表示发送此数据报.

close()方法, 无参数, 表示关闭当前Socket对象, 释放资源.

 

(2) DatagramPacket
<1> DatagramPacket 常用构造方法

 

构造一个DatagramPacket对象用来接收数据报, 接收到的数据报存到字节数组buf中, 指定长度为length.

 

构造一个DatagramPacket对象用来发送数据报, 发送的数据为字节数组中从0到指定长度length的数据. address指定目的主机的IP和端口号.

一个DatagramPacket对象就相当于一个UDP数据报. 

<2> DatagramPacket 常用方法

从接收到的数据报中, 获取发送端的IP地址. (从发送的数据报中, 获取接收端的IP地址). 

 

从接收到的数据报中, 获取发送端主机的端口号. (从发送的数据报中, 获取接收端主机的端口号). 

 

获取数据报中的数据, 返回一个字节数组.

2. TCP

[注]: TCP的核心类也是两个: SeverSocket 和Socket.  SeverSocket是专门给服务器使用的. Socket既能给服务器使用, 也能给客户端使用.

 

(1) SeverSocket
<1> SeverSocket 常用构造方法

创建一个服务器Socket对象, 并绑定到指定端口.

<2> SeverSocket 常用方法

与客户端建立连接. 

 

 

关闭该SeverSocket对象, 释放资源.

(2) Socket
<1> Socket 常用构造方法

创建一个Socket对象, 并绑定到指定主机上的指定端口号.

<2> Socket 常用方法

获取该Socket对象所绑定的地址.

 返回该Socket对象的输入流.

 返回该Socket对象的输出流.

 

 

;