套接字——socket

本文介绍了套接字作为通信机制的基本概念,包括流式套接字、数据报套接字和原始套接字的特性及应用场景。流式套接字提供可靠的双向连接服务,常用于TCP;数据报套接字则是无连接、不可靠的,适用于UDP。原始套接字允许直接访问低层协议,常见于网络协议分析和新协议实现。套接字的调用流程包括创建、绑定、连接、监听、接受和数据传输等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。Linux所提供的的功能和网络工具通常都是通过套接字来进行通讯的。套接字的创建与管道是有区别的,因为套接字明确的将客户和服务器区分开来。套接字机制可以实现将多个客户链接到一个服务器上。

1、套接字的分类

套接字分为三种,分别是流式套接字、数据报套接字和原始套接字。

  • 流式套接字。它提供了一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。在TCP/IP协议簇中,使用TCP协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。
  • 数据报套接字。它提供了一种无连接、不可靠的双向数据传输服务。数据包以独立的形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据。在TCP/IP协议簇中,使用UDP协议来实现数据报套接字。在出现差错的可能性较小或允许部分传输出错的应用场合,可以使用数据报套接字进行数据传输,这样通信的效率较高。
  • 原始套接字。该套接字允许对较低层协议进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。

2、套接字的调用流程

  • socket() 创建套接字
  • bind()  指定本地地址
  • connect()  将套接字连接到目的地址
  • listen()  设置等待连接状态
  • accept()  接收连接请求
  • send()/recv()和sendto()/recvfrom()  发送和接收数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值