0
点赞
收藏
分享

微信扫一扫

计算机网络-Tec-3-Socket编程


Socket 编程

  • 1. Socket简介
  • 2. Socket分类
  • 2.1. 有连接的客户/服务器时序图
  • 2.2. 无连接的客户/服务器时序图
  • 3. Socket常用函数
  • 3.1. socket()函数
  • 3.2. bind()函数
  • 3.3. listen()和connect()函数
  • 3.4. accept()函数
  • 3.5. read()、write()等
  • 3.6. close()操作
  • 4. Linux的阻塞和非阻塞IO
  • 5. Java Socket API
  • 5.1. 示例
  • 5.2. TCP套接字
  • 5.2.1. ServerSocket类
  • 5.2.2. Socket类
  • 5.3. 套接字传输数据
  • 5.3.1. 写入数据
  • 5.3.2. 写出数据
  • 6. TCP套接字编程示例
  • 6.1. Java示例
  • 7. UDP
  • 7.1. DatagramSocket类
  • 7.2. DatagramPacket类
  • 7.3. UDP套接字编程示例
  • 7.4. Java示例

1. Socket简介

计算机网络-Tec-3-Socket编程_路由器

  1. 不在一个主机上,通过socket来满足需求,封装不同网络主机的请求

计算机网络-Tec-3-Socket编程_Java_02

  1. 处理不同的细节存在一定的难度,Socket我们可以屏蔽一些底层设计。

2. Socket分类

计算机网络-Tec-3-Socket编程_路由协议_03

  1. 流套接字:可靠
  2. 数据报套接字:广播、简单
  3. 原始套接字:保证IP完整性

2.1. 有连接的客户/服务器时序图

计算机网络-Tec-3-Socket编程_套接字_04

  1. 客户端一般是发起方

2.2. 无连接的客户/服务器时序图

计算机网络-Tec-3-Socket编程_路由器_05

  1. 动作一致

3. Socket常用函数

  1. 这里的函数使用C作为演示。

3.1. socket()函数

计算机网络-Tec-3-Socket编程_路由协议_06

  1. 协议簇:指定具体的协议
  2. socket类型:
  3. protocol协议:具体用什么协议
  4. type和protocol是必须对应的
  5. 返回一个描述符(在协议空间,但没有绑定IP地址)

3.2. bind()函数

计算机网络-Tec-3-Socket编程_路由器_07

3.3. listen()和connect()函数

计算机网络-Tec-3-Socket编程_套接字_08

3.4. accept()函数

计算机网络-Tec-3-Socket编程_套接字_09

  1. 空指针作为返回的协议地址(因为不知道是谁来进行请求的)

3.5. read()、write()等

计算机网络-Tec-3-Socket编程_套接字_10

3.6. close()操作

计算机网络-Tec-3-Socket编程_计算机网络_11

4. Linux的阻塞和非阻塞IO

计算机网络-Tec-3-Socket编程_Java_12

  1. 文件描述符fd:是进程中文件的唯一索引
  2. 套接字默认是阻塞模式,我在写别人不能写(修改阻塞态)

计算机网络-Tec-3-Socket编程_套接字_13

  1. count个字节的数据
  2. 返回值:
  1. >0
  2. 0
  3. -1:错误码进入errno
  1. 阻塞模式:如果建立连接后则长时间占用文件,而非阻塞模式则会返回-1,判断EAGAIN
  2. 使用read调用来读取指定长度的数据(阻塞模式)
  1. nread表示不是很重要的错误
  2. 返回读了多少
  3. bufp:下次开始读是从哪里开始读

计算机网络-Tec-3-Socket编程_计算机网络_14

  1. 使用read调用来读取指定长度的数据(非阻塞模式)

计算机网络-Tec-3-Socket编程_路由器_15

5. Java Socket API

计算机网络-Tec-3-Socket编程_计算机网络_16


计算机网络-Tec-3-Socket编程_Java_17

5.1. 示例

计算机网络-Tec-3-Socket编程_路由器_18

5.2. TCP套接字

  1. Socket和ServerSocket

计算机网络-Tec-3-Socket编程_计算机网络_19

5.2.1. ServerSocket类

计算机网络-Tec-3-Socket编程_计算机网络_20

5.2.2. Socket类

计算机网络-Tec-3-Socket编程_计算机网络_21

  1. 主动连接;Socket

5.3. 套接字传输数据

5.3.1. 写入数据

计算机网络-Tec-3-Socket编程_路由器_22

5.3.2. 写出数据

计算机网络-Tec-3-Socket编程_Java_23

6. TCP套接字编程示例

计算机网络-Tec-3-Socket编程_计算机网络_24

6.1. Java示例

计算机网络-Tec-3-Socket编程_Java_25


计算机网络-Tec-3-Socket编程_Java_26

  1. Java进行了比较好的封装

计算机网络-Tec-3-Socket编程_路由器_27

7. UDP

计算机网络-Tec-3-Socket编程_计算机网络_28

7.1. DatagramSocket类

计算机网络-Tec-3-Socket编程_Java_29

7.2. DatagramPacket类

计算机网络-Tec-3-Socket编程_Java_30

7.3. UDP套接字编程示例

计算机网络-Tec-3-Socket编程_路由器_31

7.4. Java示例

计算机网络-Tec-3-Socket编程_计算机网络_32

  1. 数据报最大1024字节

计算机网络-Tec-3-Socket编程_计算机网络_33


举报

相关推荐

0 条评论