SOCKET套接字

2023-10-30

  操作系统提供,用于开发网络应用的一系列API函数接口,可以称为套接字函数,所有的系统平台都有对SOCKET套接字的兼容和实现

  虽然网络环境中有大量的协议类型,但是绝大多数协议都是采用TCP和UDP,也就是说很多软件或网站的访问与链接一样使用套接字

  在Linux平台所有的设备都会抽象成一个文件,得到该设备的文件描述符就可以访问使用设备了,在linux下socket是整型(sockfd 描述符)


网络信息结构体
    * 包含了socket相关的网络信息,IP,PORT,协议类型
    struct sockaddr_in addr 网络信息结构体
      addr_sin_family = AF_INET(ipv4) / AF_INET6(ipv6)
      addr.sin_port = 存储大端序端口号(16)
      addr.sin_addr.s_addr = 存储大端序IP(32)

  常用的大小端转换函数
    htons() *小端转大端端口号
    htonl() *小端转大端ip
    ntohs() *大端转小端端口
    ntohl() *大端转小端IP
    inet_pton(AF_INET,“402.41.2.152”,addr.sin_addr.s_addr )*字符串IP转大端序IP
    inet_ntop(AF_INET, addr.sin_addr.s_addr,ip,sizeof(ip)) *大端序转字符串IP,存到数据中

常用套接字函数

  int sockfd = socket(AF_INET,SOCK_STREAM|SOCK_DGRAM,int protocal) * 根据需求创建tcp或udp socket

  int bind(int sockfd,struct sockaddr * addr, socklen_t addrlen) * 绑定,可以让socket与特定的网络信息进行绑定,修改socket中的IP和端口

  ilisten(int sockfd, int backlog) * 监听函数,用于TCP协议,用户监听连接过程,持续监听此网络的网络消息和事件

  int client_fd = accept(int serverfd, struct sockaddr* client_addr, socklen_t* addrlen) * 服务端/被动端,调用阻塞等待客户端请求三次握手,该函数可以完成三次握手,连接成功,交互数据

  int reval = connect(int mysock,struct sockaddr* serveraddr, socklen_t addrlen); * 客户端/主动端执行,请求TCP连接(三次握手)

  recv() send() * TCP的常用读写接口

  recvfrom() sendto() *UDP的常用读写接口

  接收网络信息大小addrlen = sizeof(struct sockaddr)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SOCKET套接字 的相关文章

随机推荐

  • mysql 安装教程(详细说明)

    如果你装过 一定要先卸载干净 并且重启重新装 卸载教程 保证成功 https www cnblogs com qzhc p 11354678 html 大家都知道MySQL是一款中 小型关系型数据库管理系统 很具有实用性 对于我们学习很多技
  • SpringBoot的ApplicationRunner

    场景 在开发过程中 需要在容器启动的时候查询数据库 将数据加载到程序中 代码 Component Slf4j RequiredArgsConstructor public class InitAppRunner implements App
  • monaco-editor基本使用以及monaco-editor封装成vue组件

    文章目录 一 monaco editor基本使用 二 monaco editor封装成vue组件 一 monaco editor基本使用 以vue2项目为例 安装依赖 npm i monaco editor npm i monaco edi
  • Redis知识总结

    Redis的全称是 Remote Dictionary Server Redis是一个开源 BSD许可 内存数据结构存储 可以用作数据库 缓存和消息代理 它支持数据结构 如字符串 散列 列表 集合 带有范围查询的排序集 位图 超级日志 具有
  • unity3D 鼠标滚轮实现物体的大小缩放

    这个实现的方法不难 难的可能是要弄懂鼠标滚轮响应函数的机制 响应函数是Input GetAxis Mouse ScrollWheel 其中 这个函数是有返回值的 类型是float 向前滚是返回正数 向后滚是返回负数 所以 下面这个脚本操作的
  • 域名系统和 DNS

    目录 1 名字解析介绍和DNS 1 2 DNS服务工作原理 1 3 DNS查询类型 1 4 名称服务器 1 5 解析类型 1 6 完整的查询请求经过的流程 2 DNS 服务相关概念和技术 2 1 DNS服务器的类型 2 1 1 主DNS服务
  • 人工智能知识全面讲解:机器学习的过程

    1 3 1 机器学习的三个阶段 学习了机器学习的概念后 我们知道机器学习实际上就是计算机通过算法 处理数据并且学得模型的过程 模型 这个词经常被我们挂在嘴边 但大部 分人仍然不清楚模型是怎么做出来的 模型在计算机里是怎么表示的 对模型 很难
  • linux中的无人职守安装脚本kickstart

    一 kickstart自动安装脚本的作用 在企业中安装多台操作系统时面临的问题 当安装Linux操作系统时 安装过程会需要回答很多关于设定的问题 这些问题必须手动选择 否则无法进行安装 当只安装1台Linux系统 手动选择设定工作量比较轻松
  • 使用Go语言实现百度网盘样的云存储系统

    目录 1 项目概述 2 开始项目 3 用户服务 4 文件服务 5 结语 欢迎来到这篇关于使用Go语言实现云存储系统的博客 在这篇博客中 我们将讨论如何使用Go语言和一些常见的开源库 实现一个简单的云存储系统 这个系统将包含用户注册 登录 上
  • m1 mac 使用 obs + BlackHole 内录电脑音频

    直接 obs 是内录不了的 由于 macOS 的限制 无法获取桌面音频 于是使用 BlackHole Github 工具 该方案的原理是将电脑音频同时输出到你的设备 耳机 扬声器等 BlackHole 然后让 OBS 获取 BlackHol
  • Lambda表达式【C++语法】

    C L a m b d a
  • 测试驱动开发(TDD)实践与技巧

    文章目录 引言 Google Mock 测试用例结构 断言 经典式断言 Hamcrest 断言 测试驱动开发 第一个示例 开场白 开始吧 去掉不干净的代码 增量性 fixture 设置 思索与测试驱动开发 测试驱动与测试 测试驱动开发基础与
  • Android app多渠道打包的流程与源代码示例

    Android app多渠道打包的流程与源代码示例 多渠道打包是指通过一次构建过程生成适用于不同应用商店 市场或渠道的多个APK文件 这样可以方便开发者将应用同时发布到多个平台上 提高应用的覆盖率和下载量 本文将介绍实现多渠道打包的步骤 并
  • 静态路由实验(思科Cisco)

    思科静态配置命令 静态路由的配置命令如下 router config ip route 目的网络 网络掩码 下一跳地址 出接口 默认路由的配置命令如下 router config ip route 0 0 0 0 0 0 0 0 下一跳地址
  • kali linux之手动漏洞挖掘三(sql注入)

    服务器端程序将用户输入作为参数作为查询条件 直接拼写sql语句 并将结果返回给客户端浏览器 如判断登录 select from users where user uname and password pass select from use
  • 看完这篇 教你玩转渗透测试靶机vulnhub——DC7

    Vulnhub靶机DC7渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 SSH登入 漏洞发现与利用 提权 获取flag Vulnhub靶机渗透总结 Vulnhub靶
  • 使用C#编写程序屏蔽键盘输入

    使用C 编写程序屏蔽键盘输入 在C 中 我们可以使用System Windows Forms命名空间下的Keyboard类来实现屏蔽键盘输入的功能 下面是一段示例代码 演示了如何屏蔽键盘输入 using System using Syste
  • Java自学视频整理

    1 Java基础视频 张孝祥JAVA视频教程 完整版 RMVB 东西网 历经5年锤炼 史上最适合初学者入门的Java基础视频 传智播客 张孝祥2010年贺岁视频 Java高新技术 传智播客 Java多线程与并发库高级应用 传智播客 尚学堂J
  • 区块链自定义节点

    本地自定义节点 1 cmd中 安装好geth后 cmd geth help 检查是否geth是否安装好 然后输入命令geth datadir testNet dev rpc console 自定义本地的节点 2 metaMask 再在met
  • SOCKET套接字

    操作系统提供 用于开发网络应用的一系列API函数接口 可以称为套接字函数 所有的系统平台都有对SOCKET套接字的兼容和实现 虽然网络环境中有大量的协议类型 但是绝大多数协议都是采用TCP和UDP 也就是说很多软件或网站的访问与链接一样使用