socket网络编程学习笔记(listen、accept、recv)

2023-11-08

listen 函数

功能

        将套接字置于侦听传入连接的状态。

语法

int WSAAPI listen(
  SOCKET s,
  int    backlog
);

参数一:标识绑定的未连接套接字的描述符

参数二:挂起连接队列的最大长度

        如果设置为 SOMAXCONN,则负责套接字的基础服务提供商会将积压工作设置为最大合理值。 

返回值

        如果未发生错误,返回零。否则,返回 SOCKET_ERROR,可以通过调用 WSAGetLastError 来检索特定的错误代码。

accept函数

功能

        accept 函数允许在套接字上尝试传入连接。listen 函数用于监听客户端传来的链接,accept 函数将客户端的信息绑定到一个 socket 上。

语法

SOCKET WSAAPI accept(
   SOCKET   s,
   sockaddr *addr,
   int      *addrlen
);

参数一:已使用 listen 函数处于侦听状态的套接字

        即服务器端的 socket。

参数二:客户端的地址端口信息结构体

        用于监视客户端,通过该结构体记录客户端 IP 地址与端口号。

参数三:参数二的大小

        指针类型,指向参数二的长度。

返回值

        如果未发生错误, 则返回一个类型为 SOCKET 的值,该值是一个已建立连接的新的套接字的描述符。否则,返回 INVALID_SOCKET 值,可以通过调用 WSAGetLastError 来检索特定的错误代码。

特点

阻塞

        若没有客户端链接,则一直等待,无返回值。

一对一

        一个 accept 函数只能将服务器端与一个客户端建立连接,若想将服务器端与多个客户端建立连接则需循环调用 accept 函数,且调用次数与客户端个数相同,否则会阻塞。

recv 函数(服务器端)

功能

        从连接的套接字或绑定的无连接套接字接收数据,即接收指定客户端发送的消息。

语法

int WSAAPI recv(
  SOCKET s,
  char   *buf,
  int    len,
  int    flags
);

参数一:标识连接的套接字的描述符

        即客户端 socket,一个客户端对应唯一的 socket。

参数二:指向用于接收传入数据的缓冲区的指针

        即客户端消息的存储空间,是一个字符数组(一般设 1500 字节,即网络传输的最大单元)。

参数三:buf 参数指向的缓冲区的长度(以字节为单位)

        即参数二指向的缓冲区的长度,或者也可设为想要从缓冲区内读取的字节数(不能超过缓冲区长度)。

参数四:数据的读取方式

        一般写 0。 

返回值

        如果未发生错误,则返回收到的字节数,buf 参数指向的缓冲区将包含接收的此数据。 如果连接已正常关闭(客户端下线),则返回值为零。否则,将返回SOCKET_ERROR值,并且可以通过调用 WSAGetLastError 来检索特定的错误代码。

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

socket网络编程学习笔记(listen、accept、recv) 的相关文章

  • Java 学习路线 2024 最新版!

    又对上次分享的 Java 学习路线进行了简单修改完善 并增加了免登录下载和黑夜模式 这里重发一下 花了一个月零碎的时间 我根据当下 Java 后端求职和招聘的最新要求 对之前写的 Java 后端学习路线进行了全面的优化和改进 添加图片注释
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家
  • 【计算机毕业设计】实验室预约管理

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • Python爬虫实战:IP代理池助你突破限制,高效采集数据

    当今互联网环境中 为了应对反爬虫 匿名访问或绕过某些地域限制等需求 IP代理池成为了一种常用的解决方案 IP代理池是一个包含多个可用代理IP地址的集合 可以通过该代理池随机选择可用IP地址来进行网络请求 IP代理池是一组可用的代理IP地址
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573

随机推荐

  • php发送邮箱源码,php 发送邮箱实例代码

    php教程 发送邮箱实例代码 class pop3 public server pop3 126 com 服务器名 public server port 110 服务器端口 public timeout 30 超过多少时间就算连接失败 pu
  • java启动jar包修改JVM默认内存

    JVM默认物理内存 JVM初始分配的内存由 Xms指定 默认是物理内存的1 64 JVM最大分配的内存由 Xmx指定 默认是物理内存的1 4 默认空余堆内存小于40 时 JVM就会增大堆直到 Xmx的最大限制 空余堆内存大于70 时 JVM
  • 使用pydumpck反编译pyintaller生成的exe文件 python3.10

    目录 前言 一 pyinstaller生成exe 二 pydumpck反编译exe 1 安装 2 反编译exe文件 3 查看反编译的py文件 前言 pyinstaller生成的exe文件想反编译看下源码 但由于安装的python版本太高 p
  • 随机数生成(均匀分布、正态分布、C++)

    一 生成均匀分布的随机数 1 rand 生成的随机数在0到RAND MAX 2147483647 之间 在stdlib中定义 使用 结合 可生成某个范围内的随机数 但是这里生成的随机数是唯一确定的 include
  • 一键生成ios&android应用图标

    用的在线工具 https toool top app icon generate 只需要准备一张 1024 x 1024 的图片 即可生成各个分辨率的应用图标 十分方便
  • 畅聊安全生产,对话B站、唯品会一线专家|TakinTalks大咖对谈

    安全生产 是业界新兴起的一种概念 来源于传统行业 加强安全生产就是为了防止和减少生产安全事故 保障人民群众生命和财产安全 促进经济社会持续健康发展 随着互联网发展 数字经济在经济总量中占比超30 在以IT系统为主要支撑的新兴互联网企业中 各
  • TypeError: Cannot convert a Symbol value to a string

    记一个坑 踩了几个小时才排查到 报错没有任何信息 背景是这样的 我在store中获取了router 我对目标route的matched进行遍历 match to matched let tempList match filter item
  • idea中debug按钮不显示问题处理汇总

    1 idea控制台下面根本不显示debug按钮问题 处理方案 按照图中标注进行操作 2 Debug按钮显示 console 控制台输出窗口不显示问题 处理方案 点击标注的按钮进行重置布局 3 Debug按钮显示 但是整个控制台都不显示 点击
  • 网络原理(五):IP 协议

    目录 认识IP 地址 子网掩码 作用 动态分配IP 地址 NAT 机制 认识MAC地址 MAC地址如何工作 网络设备和相关技术 集线器 转发所有端口 交换机 MAC地址转换表 转发 主机 路由器 ARP缓存表 ARP寻址 路由器 路由 NA
  • 基于STM32单片机的智能卡路里热量表WIFI无线手机控制

    系统功能设计 本系统由STM32F103C8T6单片机 称重传感器 WIFI模块及电源组成 1 手机APP和stm32设备上WIFI模块进行连接 2 通过称重传感器采集到的重量 然后将采集到的数据通过wifi发送给手机 3 手机定制app接
  • (12)Spring框架——MyBatis的学习之关联映射

    目录 一 知识点 1 配置文件元素 二 概述 1 项目结构 2 描述 三 实例 1 mybatis config xml 2 db properties 3 log4j properties 4 mapper 1 IdCardMapper
  • 三、Python学习(二)海龟模块turtle画笔介绍及命令详解(画圆)

    1 画笔的状态 在画布上 默认有一个坐标原点为画布中心的坐标轴 坐标原点上有一只面朝x轴正方向小乌龟 这里我们描述小乌龟时使用了两个词语 坐标原点 位置 面朝x轴正方向 方向 turtle绘图中 就是使用位置方向描述小乌龟 画笔 的状态 2
  • MAC中import的maven工程无法识别java程序以及依赖包无法加载等问题的解决办法

    maven工程无法识别java程序以及依赖包 1 问题背景 2 问题截图 3 问题分析 4 问题解决 不想浪费时间就直接看4 4 前三步是我摸索的过程 4 1 删除已有的 idea文件 重新import工程 无效 4 2 删掉该maven工
  • Qt样式表 基础篇(1)

    一 什么是Qt样式表 Qt样式表是一种强大的Qt机制 除了通过子类QStyle已经可以实现的功能之外 它还允许自定义小部件的外观 Qt样式表的概念 术语和语法深受HTML层叠样式表 CSS 的启发 但同时适应了Qt 的小窗体部件 二 概述
  • opencv中的split函数

    split函数的功能是通道分离 原型 void split const Mat src Mat mvBegin void split InputArray m OutputArrayOfArrays mv 用法很显然 第一个参数为要进行分离
  • Global Illumination_SDF Generate & Visualize & Shadow

    Signed Distance Field 有向距离场 简称SDF 这其实是图形学中非常常用的数学概念 数学上来说 是定义在空间中的一个标量场 标量值为空间一点到曲面的距离 曲面外的点为正值 曲面上的点为0 曲面内的点为负数 对于需要渲染的
  • kali linux基础配置和输入法转换

    一 修改密码 1 打开终端 terminal 进入方式 桌面左上角 桌面右键 Ctrl Alt T 输入sudo passwd root 然后回车 先输入原账户密码 回车 再输入root密码 回车 再一次重复输入 回车 设置完成 二 修改系
  • GLSL基础

    OpenGL Shading Language GLSL作为一种着色语言是纯粹的和GPU打交道的计算机语言 因为GPU是多线程并行处理器 所以GLSL直接面向SIMD模型的多线程计算 GLSL编写的着色器函数是对每个数据同时执行的 每个顶点
  • “$Bitmap 有标记已使用的未用簇”

    前几天在电脑上用 DiskGenius 给移动硬盘分区的时候出现了这个错误 如下图所示 解决方法 在 cmd 命令行窗口中输入如下代码 chkdsk f x c PS 其中 c 为需要进行操作的盘符 根据实际盘符修改 操作完成后再进行分区就
  • socket网络编程学习笔记(listen、accept、recv)

    listen 函数 功能 将套接字置于侦听传入连接的状态 语法 int WSAAPI listen SOCKET s int backlog 参数一 标识绑定的未连接套接字的描述符 参数二 挂起连接队列的最大长度 如果设置为 SOMAXCO