Linux网络编程socket错误分析



Similar documents
I

国债回购交易业务指引

Template BR_Rec_2005.dot

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

《C语言基础入门》课程教学大纲

云信Linux SSH认证代理用户手册

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

第 一 部 分 MagiCAD for Revit 安 装 流 程

第2章 数据类型、常量与变量

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统 新 用 户 新 用 户 登 入 帐 户 程 序 启 动 网 上 预 约 面 谈 访 问 帐 户 核 对 帐 户 的 地 址 资 料

深圳市新亚电子制程股份有限公司


18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

上海证券交易所会议纪要

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

登录、注册功能的测试用例设计.doc

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

修改版-操作手册.doc

Microsoft Word - 第7章 图表反转形态.doc

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

生产支援功能 使用说明书(IP-110 篇)

1 系统概述

2006年顺德区高中阶段学校招生录取分数线

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

全国艺术科学规划项目

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

教师上报成绩流程图

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍 系 统 管 理 员 登 陆 班

珠江钢琴股东大会

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

联想电子订单操作指南

·岗位设置管理流程

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

GB

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

世华财讯模拟操作手册

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

操作手册

全国教师资格认定管理信息系统

4.3.3 while 语 句 用 于 无 限 循 环 当 while 语 句 的 表 达 式 永 远 不 会 为 布 尔 假 时, 循 环 将 永 远 不 会 结 束, 形 成 无 限 循 环, 也 称 死 循 环 使 用 while 语 句 构 成 无 限 循 环 的 格 式 通 常

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

目 录 1. 考 生 电 脑 安 装 配 置 考 生 电 脑 系 统 需 求 初 次 使 用 故 障 修 复 试 卷 结 构 与 分 值 在 线 考 试 登 录 考 前 倒

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式

一、资质申请

注 意 : 如 上 图 所 示, 网 上 缴 费 (12 月 3 日 至 10 日 ) 与 春 季 高 考 现 场 确 认 工 作 (12 月 3 日 至 6 日 ) 同 时 进 行, 没 有 经 过 现 场 确 认 和 确 认 信 息 没 有 上 传 到 服 务 器 的 考 生 不 能 网 上 缴

《深圳市场首次公开发行股票网上按市值申购实施办法》.doc

ICS 35

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件

用节点法和网孔法进行电路分析

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>


徐天宏:《基因天堂》.doc

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

第三章 作业

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

 编号:

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

第 四 条 建 设 单 位 对 可 能 产 生 职 业 病 危 害 的 建 设 项 目, 应 当 依 照 本 办 法 向 安 全 生 产 监 督 管 理 部 门 申 请 职 业 卫 生 三 同 时 的 备 案 审 核 审 查 和 竣 工 验 收 建 设 项 目 职 业 卫 生 三 同 时 工 作 可


乐视云视频发行平台 操作手册 V1.1

目 录 一 插 入 您 的 保 密 杀 毒 U 盘 3 二 控 制 面 板 USB SECURE ANTIVIRUS 实 时 监 控 USB SECURE ANTIVIRUS 手 动 扫 描 USB SECURE ANTIVIRUS 开 放 空 间 存 取 12

Microsoft Word - 文件汇编.doc

投 资 者 可 在 基 金 管 理 人 指 定 的 销 售 机 构 申 购 和 赎 回 美 元 等 外 币 销 售 的 基 金 份 额, 具 体 详 见 基 金 管 理 人 相 关 公 告 2 在 三 申 购 与 赎 回 的 原 则 部 分 增 加 : 1 本 基 金 采 用 多 币 种 销 售,

关于修订《沪市股票上网发行资金申购

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试

引言

<4D F736F F D20B9D8D3DA BDECB1CFD2B5C9FAC5C9C7B2B1A8B5BDB5C8D3D0B9D8B9A4D7F7B5C4CDA8D6AAA3A E362E38A3A92E646F63>

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

上海证券交易所会议纪要

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

中 国 软 科 学 年 第 期!!!

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。


Microsoft Word - 第3章.doc

听 力 测 试 1 级 A 拍 出 考 官 所 弹 奏 乐 段 的 节 拍, 并 辨 认 是 二 拍 子 还 是 三 拍 子 考 官 会 开 始 弹 奏 乐 段, 考 生 应 尽 快 加 入, 拍 出 拍 子 并 突 出 强 拍 考 官 接 着 会 问 乐 曲 是 二 拍 子 还 是 三 拍 子 不

QXW(33e9)

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

Cybozu Garoon 3 管理员手册

电信系教学大纲的基本规范

2 任 务 目 标 任 务 实 施 学 一 学 安 全 用 电 1. 安 全 用 电 的 意 义 2. 人 体 触 电 的 基 本 知 识 1 2 1mA 10 30mA 50mA 100mA 750ms Hz

RG-SU V4.44使用说明书.doc


环信移动客服v4.1

第 三 章 审 计 证 据 2

!!!!!!!!!!

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

Operations Review September 14, 2006

Transcription:

Linux 网 络 编 程 socket 错 误 分 析 socket 错 误 码 : EINTR: 4 阻 塞 的 操 作 被 取 消 阻 塞 的 调 用 打 断 如 设 置 了 发 送 接 收 超 时, 就 会 遇 到 这 种 错 误 只 能 针 对 阻 塞 模 式 的 socket 读, 写 阻 塞 的 socket 时,-1 返 回, 错 误 号 为 INTR 另 外, 如 果 出 现 EINTR 即 errno 为 4, 错 误 描 述 Interrupted system call, 操 作 也 应 该 继 续 如 果 recv 的 返 回 值 为 0, 那 表 明 连 接 已 经 断 开, 接 收 操 作 也 应 该 结 束 ETIMEOUT:110 1 操 作 超 时 一 般 设 置 了 发 送 接 收 超 时, 遇 到 网 络 繁 忙 的 情 况, 就 会 遇 到 这 种 错 误 2 服 务 器 做 了 读 数 据 做 了 超 时 限 制, 读 时 发 生 了 超 时 3 错 误 被 描 述 为 connect time out, 即 连 接 超 时, 这 种 情 况 一 般 发 生 在 服 务 器 主 机 崩 溃 此 时 客 户 TCP 将 在 一 定 时 间 内 ( 依 具 体 实 现 ) 持 续 重 发 数 据 分 节, 试 图 从 服 务 TCP 获 得 一 个 ACK 分 节 当 最 终 放 弃 尝 试 后 ( 此 时 服 务 器 未 重 新 启 动 ), 内 核 将 会 向 客 户 进 程 返 回 ETIMEDOUT 错 误 如 果 某 个 中 间 路 由 器 判 定 该 服 务 器 主 机 已 经 不 可 达, 则 一 般 会 响 应 destination unreachable - 目 的 地 不 可 达 的 ICMP 消 息, 相 应 的 客 户 进 程 返 回 的 错 误 是 EHOSTUNREACH 或 ENETUNREACH 当 服 务 器 重 新 启 动 后, 由 于 TCP 状 态 丢 失, 之 前 所 有 的 连 接 信 息 也 不 存 在 了, 此 时 对 于 客 户 端 发 来 请 求 将 回 应 RST 如 果 客 户 进 程 对 检 测 服 务 器 主 机 是 否 崩 溃 很 有 必 要, 要 求 即 使 客 户 进 程 不 主 动 发 送 数 据 也 能 检 测 出 来, 那 么 需 要 使 用 其 它 技 术, 如 配 置 SO_KEEPALIVE Socket 选 项, 或 实 现 某 些 心 跳 函 数 EAGAIN: 1 Send 返 回 值 小 于 要 发 送 的 数 据 数 目, 会 返 回 EAGAIN 和 EINTR 2 recv 返 回 值 小 于 请 求 的 长 度 时 说 明 缓 冲 区 已 经 没 有 可 读 数 据, 但 再 读 不 一 定 会 触 发 EAGAIN, 有 可 能 返 回 0 表 示 TCP 连 接 已 被 关 闭 3 当 socket 是 非 阻 塞 时, 如 返 回 此 错 误, 表 示 写 缓 冲 队 列 已 满, 可 以 做 延 时 后 再 重 试. 4 在 Linux 进 行 非 阻 塞 的 socket 接 收 数 据 时 经 常 出 现 Resource temporarily unavailable,errno 代 码 为 11(EAGAIN), 表 明 在 非 阻 塞 模 式 下 调 用 了 阻 塞 操 作, 在 该 操 作 没 有 完 成 就 返 回 这 个 错 误, 这 个 错 误 不 会 破 坏 socket 的 同 步, 不 用 管 它, 下 次 循 环 接 着 recv 就 可 以 对 非 阻 塞 socket 而 言,EAGAIN 不 是 一 种 错 误 EPIPE: 1 Socket 关 闭, 但 是 socket 号 并 没 有 置 -1 继 续 在 此 socket 上 进 行 send 和 recv, 就 会 返 回 这 种 错 误 这 个 错 误 会 引 发 SIGPIPE 信 号, 系 统 会 将 产 生 此 EPIPE 错 误 的 进 程 杀 死 所 以, 一 般 在 网 络 程 序 中, 首 先 屏 蔽 此 消 息, 以 免 发 生 不 及 时 设 置 socket 进 程 被 杀 死 的 情 况 2 write(..) on a socket that has been closed at the other end will cause a SIGPIPE. 3 错 误 被 描 述 为 broken pipe, 即 管 道 破 裂, 这 种 情 况 一 般 发 生 在 客 户 进 程 不 理 会 ( 或 未 及 时 处 理 )Socket 错 误, 继 续 向 服 务 TCP 写 入 更 多 数 据 时, 内 核 将 向 客 户 进 程 发 送 SIGPIPE 信 号, 该 信 号 默 认 会 使 进 程 终 止 ( 此 时 该 前 台 进 程 未 进 行 core dump) 结 合 上 边 的 ECONNRESET 错 误 可 知, 向 一 个 FIN_WAIT2 状 态 的 服 务 TCP( 已 ACK 响 应 FIN 分 节 ) 写 入 数 据 不 成 问 题, 但 是 写 一 个 已 接 收 了 RST 的 Socket 则 是 一 个 错 误

EBADF: read(..) or write(..) on a locally closed socket will return EBADF EFAULT: 地 址 错 误 EBUSY: ECONNREFUSED: 1 拒 绝 连 接 一 般 发 生 在 连 接 建 立 时 拔 服 务 器 端 网 线 测 试, 客 户 端 设 置 keep alive 时,recv 较 快 返 回 0, 先 收 到 ECONNREFUSED (Connection refused) 错 误 码, 其 后 都 是 ETIMEOUT 2 an error returned from connect(), so it can only occur in a client (if a client is defined as the party that initiates the connection ECONNRESET: 1 在 客 户 端 服 务 器 程 序 中, 客 户 端 异 常 退 出, 并 没 有 回 收 关 闭 相 关 的 资 源, 服 务 器 端 会 先 收 到 ECONNRESET 错 误, 然 后 收 到 EPIPE 错 误 2 连 接 被 远 程 主 机 关 闭 有 以 下 几 种 原 因 : 远 程 主 机 停 止 服 务, 重 新 启 动 ; 当 在 执 行 某 些 操 作 时 遇 到 失 败, 因 为 设 置 了 keep alive 选 项, 连 接 被 关 闭, 一 般 与 ENETRESET 一 起 出 现 3 远 程 端 执 行 了 一 个 hard 或 者 abortive 的 关 闭 应 用 程 序 应 该 关 闭 socket, 因 为 它 不 再 可 用 当 执 行 在 一 个 UDP socket 上 时, 这 个 错 误 表 明 前 一 个 send 操 作 返 回 一 个 ICMP port unreachable 信 息 4 如 果 client 关 闭 连 接,server 端 的 select 并 不 出 错 ( 不 返 回 -1, 使 用 select 对 唯 一 一 个 socket 进 行 non- blocking 检 测 ), 但 是 写 该 socket 就 会 出 错, 用 的 是 send. 错 误 号 :ECONNRESET. 读 (recv)socket 并 没 有 返 回 错 误 5 该 错 误 被 描 述 为 connection reset by peer, 即 对 方 复 位 连 接, 这 种 情 况 一 般 发 生 在 服 务 进 程 较 客 户 进 程 提 前 终 止 当 服 务 进 程 终 止 时 会 向 客 户 TCP 发 送 FIN 分 节, 客 户 TCP 回 应 ACK, 服 务 TCP 将 转 入 FIN_WAIT2 状 态 此 时 如 果 客 户 进 程 没 有 处 理 该 FIN ( 如 阻 塞 在 其 它 调 用 上 而 没 有 关 闭 Socket 时 ), 则 客 户 TCP 将 处 于 CLOSE_WAIT 状 态 当 客 户 进 程 再 次 向 FIN_WAIT2 状 态 的 服 务 TCP 发 送 数 据 时, 则 服 务 TCP 将 立 刻 响 应 RST 一 般 来 说, 这 种 情 况 还 可 以 会 引 发 另 外 的 应 用 程 序 异 常, 客 户 进 程 在 发 送 完 数 据 后, 往 往 会 等 待 从 网 络 IO 接 收 数 据, 很 典 型 的 如 read 或 readline 调 用, 此 时 由 于 执 行 时 序 的 原 因, 如 果 该 调 用 发 生 在 RST 分 节 收 到 前 执 行 的 话, 那 么 结 果 是 客 户 进 程 会 得 到 一 个 非 预 期 的 EOF 错 误 此 时 一 般 会 输 出 server terminated prematurely - 服 务 器 过 早 终 止 错 误 EINVAL: 无 效 参 数 提 供 的 参 数 非 法 有 时 也 会 与 socket 的 当 前 状 态 相 关, 如 一 个 socket 并 没 有 进 入 listening 状 态, 此 时 调 用 accept, 就 会 产 生 EINVAL 错 误 EMFILE:

打 开 了 太 多 的 socket 对 进 程 或 者 线 程 而 言, 每 种 实 现 方 法 都 有 一 个 最 大 的 可 用 socket 数 目 处 理, 或 者 是 全 局 的, 或 者 是 局 部 的 EWOULDBLOCK:EAGAIN 资 源 暂 时 不 可 用 这 个 错 误 是 从 对 非 阻 塞 socket 进 行 的 不 能 立 即 结 束 的 操 作 返 回 的, 如 当 没 有 数 据 在 队 列 中 可 以 读 时, 调 用 recv 并 不 是 fatal 错 误, 稍 后 操 作 可 以 被 重 复 调 用 在 一 个 非 阻 塞 的 SOCK_STREAM socket 上 调 用 connect 时 会 产 生 这 个 错 误, 因 为 有 时 连 接 建 立 必 须 消 耗 一 定 的 时 间 ENOTCONN 在 一 个 没 有 建 立 连 接 的 socket 上, 进 行 read,write 操 作 会 返 回 这 个 错 误 出 错 的 原 因 是 socket 没 有 标 识 地 址 Setsoc 也 可 能 会 出 错 ECONNRESET Connection reset by peer. 连 接 被 远 程 主 机 关 闭 有 以 下 几 种 原 因 : 远 程 主 机 停 止 服 务, 重 新 启 动 ; 当 在 执 行 某 些 操 作 时 遇 到 失 败, 因 为 设 置 了 keep alive 选 项, 连 接 被 关 闭, 一 般 与 ENETRESET 一 起 出 现 ECONNABORTED 1 软 件 导 致 的 连 接 取 消 一 个 已 经 建 立 的 连 接 被 host 方 的 软 件 取 消, 原 因 可 能 是 数 据 传 输 超 时 或 者 是 协 议 错 误 2 该 错 误 被 描 述 为 software caused connection abort, 即 软 件 引 起 的 连 接 中 止 原 因 在 于 当 服 务 和 客 户 进 程 在 完 成 用 于 TCP 连 接 的 三 次 握 手 后, 客 户 TCP 却 发 送 了 一 个 RST ( 复 位 ) 分 节, 在 服 务 进 程 看 来, 就 在 该 连 接 已 由 TCP 排 队, 等 着 服 务 进 程 调 用 accept 的 时 候 RST 却 到 达 了 POSIX 规 定 此 时 的 errno 值 必 须 ECONNABORTED 源 自 Berkeley 的 实 现 完 全 在 内 核 中 处 理 中 止 的 连 接, 服 务 进 程 将 永 远 不 知 道 该 中 止 的 发 生 服 务 器 进 程 一 般 可 以 忽 略 该 错 误, 直 接 再 次 调 用 accept 当 TCP 协 议 接 收 到 RST 数 据 段, 表 示 连 接 出 现 了 某 种 错 误, 函 数 read 将 以 错 误 返 回, 错 误 类 型 为 ECONNERESET 并 且 以 后 所 有 在 这 个 套 接 字 上 的 读 操 作 均 返 回 错 误 错 误 返 回 时 返 回 值 小 于 0 ENETUNREACH 网 络 不 可 达 Socket 试 图 操 作 一 个 不 可 达 的 网 络 这 意 味 着 local 的 软 件 知 道 没 有 路 由 到 达 远 程 的 host ENETRESET 网 络 重 置 时 丢 失 连 接 由 于 设 置 了 "keep-alive" 选 项, 探 测 到 一 个 错 误, 连 接 被 中 断 在 一 个 已 经 失 败 的 连 接 上 试 图 使 用 setsockopt 操 作, 也 会 返 回 这 个 错 误 EINPROGRESS: 操 作 正 在 进 行 中 一 个 阻 塞 的 操 作 正 在 执 行 ENOTSOCK:

在 非 socket 上 执 行 socket 操 作 EDESTADDRREQ: 需 要 提 供 目 的 地 址 在 一 个 socket 上 的 操 作 需 要 提 供 地 址 如 往 一 个 ADDR_ANY 地 址 上 进 行 sendto 操 作 会 返 回 这 个 错 误 EMSGSIZE: 消 息 体 太 长 发 送 到 socket 上 的 一 个 数 据 包 大 小 比 内 部 的 消 息 缓 冲 区 大, 或 者 超 过 别 的 网 络 限 制, 或 是 用 来 接 收 数 据 包 的 缓 冲 区 比 数 据 包 本 身 小 EPROTOTYPE 协 议 类 型 错 误 标 识 了 协 议 的 Socket 函 数 在 不 支 持 的 socket 上 进 行 操 作 如 ARPA Internet UDP 协 议 不 能 被 标 识 为 SOCK_STREAM socket 类 型 ENOPROTOOPT 该 错 误 不 是 一 个 Socket 连 接 相 关 的 错 误 errno 给 出 该 值 可 能 由 于, 通 过 getsockopt 系 统 调 用 来 获 得 一 个 套 接 字 的 当 前 选 项 状 态 时, 如 果 发 现 了 系 统 不 支 持 的 选 项 参 数 就 会 引 发 该 错 误 EPROTONOSUPPORT 不 支 持 的 协 议 系 统 中 没 有 安 装 标 识 的 协 议, 或 者 是 没 有 实 现 如 函 数 需 要 SOCK_DGRAM socket, 但 是 标 识 了 stream protocol. ESOCKTNOSUPPORT Socket 类 型 不 支 持 指 定 的 socket 类 型 在 其 address family 中 不 支 持 如 可 选 选 中 选 项 SOCK_RAW, 但 实 现 并 不 支 持 SOCK_RAW sockets EOPNOTSUPP Operation not supported. The attempted operation is not supported for the type of object referenced. Usually this occurs when a socket descriptor to a socket that cannot support this operation, for example, trying to accept a connection on a datagram socket. EPFNOSUPPORT Protocol family not supported. The protocol family has not been configured into the system or no implementation for it exists. Has a slightly different meaning to EAFNOSUPPORT, but is interchangeable in most cases, and all Windows Sockets functions that return one of these specify EAFNOSUPPORT. EAFNOSUPPORT

Address family not supported by protocol family. An address incompatible with the requested protocol was used. All sockets are created with an associated "address family" (i.e. AF_INET for Internet Protocols) and a generic protocol type (i.e. SOCK_STREAM). This error will be returned if an incorrect protocol is explicitly requested in the socket call, or if an address of the wrong family is used for a socket, e.g. in sendto. EADDRINUSE Address already in use. Only one usage of each socket address (protocol/ip address/port) is normally permitted. This error occurs if an application attempts to bind a socket to an IP address/port that has already been used for an existing socket, or a socket that wasn't closed properly, or one that is still in the process of closing. For server applications that need to bind multiple sockets to the same port number, consider using setsockopt(so_reuseaddr). Client applications usually need not call bind at all - connect will choose an unused port automatically. When bind is called with a wild-card address (involving ADDR_ANY), a EADDRINUSE error could be delayed until the specific address is "committed." This could happen with a call to other function later, including connect, listen, Connect or JoinLeaf. EADDRNOTAVAIL Cannot assign requested address. The requested address is not valid in its context. Normally results from an attempt to bind to an address that is not valid for the local machine. This can also result from connect, sendto, Connect, JoinLeaf, or SendTo when the remote address or port is not valid for a remote machine (e.g. address or port 0). ENETDOWN Network is down. A socket operation encountered a dead network. This could indicate a serious failure of the network system (i.e. the protocol stack that the WinSock DLL runs over), the network interface, or the local network itself. ENOBUFS No buffer space available. An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full. EISCONN Socket is already connected.

A connect request was made on an already connected socket. Some implementations also return this error if sendto is called on a connected SOCK_DGRAM socket (For SOCK_STREAM sockets, the to parameter in sendto is ignored), although other implementations treat this as a legal occurrence. 连 接 过 程 可 能 出 现 的 错 误 情 况 有 : (1) 如 果 客 户 机 TCP 协 议 没 有 接 收 到 对 它 的 SYN 数 据 段 的 确 认, 函 数 以 错 误 返 回, 错 误 类 型 为 ETIMEOUT 通 常 TCP 协 议 在 发 送 SYN 数 据 段 失 败 之 后, 会 多 次 发 送 SYN 数 据 段, 在 所 有 的 发 送 都 高 中 失 败 之 后, 函 数 以 错 误 返 回 注 :SYN(synchronize) 位 : 请 求 连 接 TCP 用 这 种 数 据 段 向 对 方 TCP 协 议 请 求 建 立 连 接 在 这 个 数 据 段 中,TCP 协 议 将 它 选 择 的 初 始 序 列 号 通 知 对 方, 并 且 与 对 方 协 议 协 商 最 大 数 据 段 大 小 SYN 数 据 段 的 序 列 号 为 初 始 序 列 号, 这 个 SYN 数 据 段 能 够 被 确 认 当 协 议 接 收 到 对 这 个 数 据 段 的 确 认 之 后, 建 立 TCP 连 接 (2) 如 果 远 程 TCP 协 议 返 回 一 个 RST 数 据 段, 函 数 立 即 以 错 误 返 回, 错 误 类 型 为 ECONNREFUSED 当 远 程 机 器 在 SYN 数 据 段 指 定 的 目 的 端 口 号 处 没 有 服 务 进 程 在 等 待 连 接 时, 远 程 机 器 的 TCP 协 议 将 发 送 一 个 RST 数 据 段, 向 客 户 机 报 告 这 个 错 误 客 户 机 的 TCP 协 议 在 接 收 到 RST 数 据 段 后 不 再 继 续 发 送 SYN 数 据 段, 函 数 立 即 以 错 误 返 回 注 :RST(reset) 位 : 表 示 请 求 重 置 连 接 当 TCP 协 议 接 收 到 一 个 不 能 处 理 的 数 据 段 时, 向 对 方 TCP 协 议 发 送 这 种 数 据 段, 表 示 这 个 数 据 段 所 标 识 的 连 接 出 现 了 某 种 错 误, 请 求 TCP 协 议 将 这 个 连 接 清 除 有 3 种 情 况 可 能 导 致 TCP 协 议 发 送 RST 数 据 段 :(1)SYN 数 据 段 指 定 的 目 的 端 口 处 没 有 接 收 进 程 在 等 待 ;(2)TCP 协 议 想 放 弃 一 个 已 经 存 在 的 连 接 ;(3)TCP 接 收 到 一 个 数 据 段, 但 是 这 个 数 据 段 所 标 识 的 连 接 不 存 在 接 收 到 RST 数 据 段 的 TCP 协 议 立 即 将 这 条 连 接 非 正 常 地 断 开, 并 向 应 用 程 序 报 告 错 误 (3) 如 果 客 户 机 的 SYN 数 据 段 导 致 某 个 路 由 器 产 生 目 的 地 不 可 到 达 类 型 的 ICMP 消 息, 函 数 以 错 误 返 回, 错 误 类 型 为 EHOSTUNREACH 或 ENETUNREACH 通 常 TCP 协 议 在 接 收 到 这 个 ICMP 消 息 之 后, 记 录 这 个 消 息, 然 后 继 续 几 次 发 送 SYN 数 据 段, 在 所 有 的 发 送 都 告 失 败 之 后,TCP 协 议 检 查 这 个 ICMP 消 息, 函 数 以 错 误 返 回 注 :ICMP:Internet 消 息 控 制 协 议 Internet 的 运 行 主 要 是 由 Internet 的 路 由 器 来 控 制, 路 由 器 完 成 IP 数 据 包 的 发 送 和 接 收, 如 果 发 送 数 据 包 时 发 生 错 误, 路 由 器 使 用 ICMP 协 议 来 报 告 这 些 错 误 ICMP 数 据 包 是 封 装 在 IP 数 据 包 的 数 据 部 分 中 进 行 传 输 的, 其 格 式 如 下 : 类 型 码 校 验 和 数 据 0 8 16 24 31 类 型 : 指 出 ICMP 数 据 包 的 类 型 代 码 : 提 供 ICMP 数 据 包 的 进 一 步 信 息 校 验 和 : 提 供 了 对 整 个 ICMP 数 据 包 内 容 的 校 验 和 ICMP 数 据 包 主 要 有 以 下 类 型 : (1) 目 的 地 不 可 到 达 :A 目 的 主 机 未 运 行 ;B 目 的 地 址 不 存 在 ;C 路 由 表 中 没 有 目 的 地 址 对 应 的 条 目, 因 而 路 由 器 无 法 找 到 去 往 目 的 主 机 的 路 由 (2) 超 时 : 路 由 器 将 接 收 到 的 IP 数 据 包 的 生 存 时 间 (TTL) 域 减 1, 如 果 这 个 域 的 值 变 为 0, 路 由 器 丢 弃 这 个 IP 数 据 包, 并 且 发 送 这 种 ICMP 消 息 (3) 参 数 出 错 : 当 IP 数 据 包 中 有 无 效 域 时 发 送

(4) 重 定 向 : 将 一 条 新 的 路 径 通 知 主 机 (5) ECHO 请 求 ECHO 回 答 : 这 两 条 消 息 用 语 测 试 目 的 主 机 是 否 可 以 到 达 请 求 者 向 目 的 主 机 发 送 ECHO 请 求 ICMP 数 据 包, 目 的 主 机 在 接 收 到 这 个 ICMP 数 据 包 之 后, 返 回 ECHO 回 答 ICMP 数 据 包 (6) 时 戳 请 求 时 戳 回 答 :ICMP 协 议 使 用 这 两 种 消 息 从 其 他 机 器 处 获 得 其 时 钟 的 当 前 时 间 调 用 函 数 connect 的 过 程 中, 当 客 户 机 TCP 协 议 发 送 了 SYN 数 据 段 的 确 认 之 后,TCP 状 态 由 CLOSED 状 态 转 为 SYN_SENT 状 态, 在 接 收 到 对 SYN 数 据 段 的 确 认 之 后,TCP 状 态 转 换 成 ESTABLISHED 状 态, 函 数 成 功 返 回 如 果 调 用 函 数 connect 失 败, 应 该 用 close 关 闭 这 个 套 接 字 描 述 符, 不 能 再 次 使 用 这 个 套 接 字 描 述 符 来 调 用 函 数 connect connect 函 数 的 出 错 处 理 : (1)ETIMEOUT-connection timed out 目 的 主 机 不 存 在, 没 有 返 回 任 何 相 应, 例 如 主 机 关 闭 (2)ECONNREFUSED-connection refused( 硬 错 ) 到 达 目 的 主 机 后, 由 于 各 种 原 因 建 立 不 了 连 接, 主 机 返 回 RST( 复 位 ) 响 应, 例 如 主 机 监 听 进 程 未 启 用,tcp 取 消 连 接 等 (3)EHOSTTUNREACH-no route to host( 软 错 ) 路 由 上 引 发 了 一 个 目 的 地 不 可 达 的 ICMP 错 误 其 中 (1)( 3), 客 户 端 会 进 行 定 时 多 次 重 试, 一 定 次 数 后 才 返 回 错 误 另 外, 当 connect 连 接 失 败 时,sockfd 套 接 口 不 可 用, 必 须 关 闭 后 重 新 socket 分 配 才 行 getsockopt 和 setsockopt 还 可 能 引 发 以 下 错 误 : getsockopt/setsockopt(2) man page 写 道 ERRORS The getsockopt() and setsockopt() system calls will succeed unless: [EBADF] The argument socket is not a valid file descriptor. [EFAULT] The address pointed to by option_value is not in a valid part of the process dress space. For getsockopt(), this error may also be returned if option_len is not in a valid part of the process address space. [EINVAL] The option is invalid at the level indicated. [ENOBUFS]Insufficient memory buffers are available. [ENOPROTOOPT] The option is unknown at the level indicated. [ENOTSOCK] The argument socket is not a socket (e.g., a plain file). The setsockopt() system call will succeed unless: [EDOM] The argument option_value is out of bounds. [EISCONN]socket is already connected and a specified option cannot be set while this is the case.