当前位置: 首页 > news >正文

socket 套接字函数

原型:

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

参数含义:

1)domin(协议族 / 地址族)——“在哪一层地址上工作”

说明常见用途
AF_INET / PF_INETIPv4TCP/UDP over IPv4
AF_INET6 / PF_INET6IPv6TCP/UDP over IPv6
AF_UNIX / PF_UNIX本地套接字(aka AF_LOCAL本机进程间高速通信
AF_NETLINK与内核 netlink 对话路由、防火墙、udev 等
AF_PACKET裸链路层自己组装以太帧(抓包、发裸包)

2)type(语义类型)——“给我什么样的行为”

说明对应传输层
SOCK_STREAM可靠、面向连接、字节流TCP
SOCK_DGRAM不可靠、无连接、数据报UDP
SOCK_RAW绕过内核传输层,自己写 IP 头ICMP、自定义 IP 协议
SOCK_SEQPACKET可靠、面向连接、但保留报文边界SCTP 或 unix 域
`SOCK_DGRAMSOCK_NONBLOCK`原子非阻塞 UDP需要内核 2.6.27+
`SOCK_STREAMSOCK_CLOEXEC`自动 close-on-exec避免泄露给子进程

3)protocol——“更精确地挑协议”

含义
IPPROTO_TCP6TCP
IPPROTO_UDP17UDP
IPPROTO_ICMP1ICMP(需 SOCK_RAW)
IPPROTO_SCTP132SCTP
IPPROTO_RAW255原始 IP,自己填首部

4)最常用的“复制粘贴”组合

int tcp4 = socket(AF_INET,  SOCK_STREAM, 0);            // IPv4 TCPint udp4 = socket(AF_INET,  SOCK_DGRAM,  0);            // IPv4 UDPint tcp6 = socket(AF_INET6, SOCK_STREAM, 0);            // IPv6 TCPint udp6 = socket(AF_INET6, SOCK_DGRAM,  0);            // IPv6 UDPint icmp = socket(AF_INET,  SOCK_RAW,    IPPROTO_ICMP); // IPv4 原始 ICMPint unix = socket(AF_UNIX,  SOCK_STREAM, 0);            // 本地字节流

5)返回值与错误

成功:非负整数 —— 后续 read/write/bind/listen/connect/accept/setsockopt/close 都用它。

失败:-1,查看 errno 常见: EACCES 权限不足(RAW 需 CAP_NET_RAW) EMFILE 进程 fd 耗尽 ENFILE 系统 fd 耗尽 EPROTONOSUPPORT 内核没编译该协议 ENOMEM 内存不足

一句话速记 domain 选“地址类型”,type 选“行为”,protocol 选“具体协议”,0 交给内核猜。

http://www.dtcms.com/a/418539.html

相关文章:

  • 利用ChIPBase数据库构建出高质量的mRNA-TF调控网络
  • FastAPI 与 Flask的主要区别是什么?
  • Qt常用控件之QSpinBox
  • 基于PyTorch的CIFAR10加载与TensorBoard可视化实践
  • 西安网站建设陕icp网站建设公司考察
  • Linux中安装es
  • flink批处理-水位线
  • Unity单元测试:C语言轻量级框架实战
  • 网站怎么做搜索引擎优化、中建官网
  • 构建并运行最小 Linux 内核
  • 粤港澳全运会网络安全防御体系深度解析:威胁态势与实战防护
  • 数据结构——包装类泛型
  • 中国建设银行贵州分行网站安卓app制作入门教程
  • 17. 整个网站建设中的关键是专业客户管理系统
  • RuoYi 学习笔记 2:常用功能
  • 负载均衡式的在线OJ项目编写(五)
  • USBKey智能密码钥匙:从硬件安全到未来信任架构的深度技术解析
  • K8s日志架构:Sidecar容器实践指南
  • 前端开发,iframe 相关经验总结
  • 前端-JS基础-day3
  • MIT 6.S081 文件系统的崩溃恢复
  • 图片展示模块网站做一个多少钱影视vip网站建设教程
  • 环境搭建,Ubuntu 安装、客户端使用与性能认知
  • 合肥市城乡和建设网站南充建设企业网站
  • Music Muse AI音乐生成器全面解析:免费创作高质量音乐的核心要素
  • Go 语言中的结构体
  • Nest 文件上传与下载
  • 2025-9-28学习笔记
  • 深度学习(十三):向量化与矩阵化
  • 矩阵结构体 图片绘制 超级玛丽demo6