getsockopt IPPROTO_SCTP、SCTP_STATUS 的“无效参数”

2024-02-09

设想:

我创建了 SCTP 一对多套接字(以大写字母开头的函数调用相应的标准函数,检查错误并将 errno 打印到 stderr)

int sock_fd,msg_flags;
char readbuf[BUFFSIZE];
struct sockaddr_in servaddr, cliaddr;
struct sctp_sndrcvinfo sri;
struct sctp_event_subscribe evnts;
int stream_increment=1;
socklen_t len;
size_t rd_sz;

sock_fd = Socket( AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
bzero( &servaddr, sizeof( servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY);
servaddr.sin_port = htons( SERV_PORT);

Bind( sock_fd, ( SA *) &servaddr, sizeof(servaddr));

bzero( &evnts, sizeof( evnts));
evnts.sctp_data_io_event = 1;
Setsockopt( sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &evnts, sizeof( evnts));

Listen( sock_fd, LISTENQ);

然后我阻止对 sctp_recvmsg 的调用,以在消息到达时读取消息

 rd_sz = Sctp_recvmsg( sock_fd, readbuf, sizeof( readbuf),
             (SA *)&cliaddr, &len, &sri,&msg_flags);

客户端连接后我打电话获取套接字 http://man7.org/linux/man-pages/man2/setsockopt.2.html检索 SCTP 关联的当前状态

len = sizeof(struct sockaddr_in);
socklen_t retsz;
struct sctp_status status;
retsz = sizeof(status); 
bzero(&status,sizeof(status));

status.sstat_assoc_id = sctp_address_to_associd(sock_fd, (SA *)&cliaddr, len);  
getsockopt( sock_fd, IPPROTO_SCTP, SCTP_STATUS, &status, &retsz);

函数 sctp_address_to_associd 是:

sctp_assoc_t
sctp_address_to_associd(int sock_fd, struct sockaddr *sa, socklen_t salen)
{
    struct sctp_paddrparams sp;
    socklen_t siz;

    siz = sizeof(struct sctp_paddrparams);
    bzero(&sp,siz);
    memcpy(&sp.spp_address,sa,salen);
    sctp_opt_info(sock_fd,0,
           SCTP_PEER_ADDR_PARAMS, &sp, &siz);
    return(sp.spp_assoc_id);
}

为什么 getsockopt 返回“无效参数”? errno = 22。操作系统是 Linux Ubuntu 12.10。


SCTP_PEER_ADDR_PARAMS 套接字选项sctp_address_to_associd()函数不能用于学习关联 ID,至少在 Linux 上不能。

由于您已经从 sctp_recvmsg() 调用中获取了关联 ID,因此请使用struct sctp_sndrcvinfo反而:

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

getsockopt IPPROTO_SCTP、SCTP_STATUS 的“无效参数” 的相关文章

  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • 返回 int& 的函数[重复]

    这个问题在这里已经有答案了 我在网上查了一下发现一篇试图解释的文章std move和右值 http thbecker net articles rvalue references section 01 html并发现了一些我实在无法掌握的东
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E

随机推荐

  • 在tinymce文本编辑器数据中的字符串末尾添加句点/点

    目前我的数据保存在 mysql 数据库中 如下所示 来自tinymce textarea 在 html 中显示数据时 我需要在字符串末尾附加一个句点或点 下面是示例 数据存储在数据库中 strong Hello World strong 当
  • 评估 XML 中的 XPath 表达式

    使用Add on SDK创建Firefox插件时 如何处理XML文件 使用 XPath 评估会引发错误 XPathResult 未定义 我正在尝试处理用这个代码 var iterator xmlDoc evaluate stream xml
  • 覆盖 left_join dplyr 来更新数据

    我的问题与此类似 但是我在 LHS 中有其他应保留的列https stackoverflow com a 35642948 9285732 https stackoverflow com a 35642948 9285732 y是一个子集x
  • 角度套接字 io 未定义

    这里有一个建议 https github com btford angular socket io issues 127 https github com btford angular socket io issues 127 确保您有 s
  • 如何使用缓冲区溢出攻击替换堆栈上的返回地址

    对于家庭作业 我正在执行一系列缓冲区溢出攻击 有人给了我一个要反汇编的程序 这是一个不正确调用的函数的 C 源代码gets 以及我应该强制程序调用的其他几个函数的源代码 对于其中一项任务 我必须 注入一些改变值的代码 然后 返回上述方法之一
  • 使用哪个 Java 库来录制连接的摄像机的视频?

    您可能认为有一个简单的解决方案 但没有 我的应用程序需要从 USB 火线 或任何连接 连接的相机捕获流 结果将是一个类似的文件输出 flv 我希望能够检测所有连接的摄像机并选择使用哪一台 同时使用一台或多台 gt 一个或多个输出文件 应用程
  • 不带绑定的验证规则

    我想在文本框上使用 ValidationRules 及其 UI 效果 而不实际将任何内容绑定到文本框 我想将文本框用于某些不绑定到任何内容但需要在焦点丢失后使用 ValidationRules 验证输入的输入 能做到吗
  • 如何创建仅可由特定类使用的构造函数。 (C++ Friend 相当于 C# 中的内容)

    据我所知 在C 中 不象C 中那样支持 friend 关键字 是否有另一种方法来设计一个类 可以实现相同的最终结果 而无需诉诸不可用的 friend 关键字 对于那些还不知道的人来说 Friend 关键字允许程序员指定类 X 的成员只能由类
  • 使用方法在 ArrayList 中循环

    在很多帮助下 我开发了一种方法 可以制作字谜词 然后将它们添加到ArrayList public void f String s String anagram ArrayList
  • 删除崩溃的 Innodb 表

    我无法删除 删除崩溃的 Innodb 表 我收到以下错误 错误 1051 42S02 未知表 帐户 如果我想创建它 我会收到以下错误 错误 1005 HY000 无法创建表 accounts errno 1 我的服务器在意外断电后会发生这种
  • 数 45 秒,暂停 20 秒,然后用不同的标题重复

    在尝试限制电池使用时 我不需要有繁忙的循环 所以我不确定如何解决这个问题 如果我有一个程序 允许某人唱歌 45 秒 然后他们暂停 20 秒喝一杯 然后重复唱一定数量的歌曲 我的计时器是在取消一次迭代并开始另一次迭代后 计时器无法正常工作 h
  • 使用asp.net中的web api通过http进行身份验证

    我观看并浏览了很多有关保护 ASP NET Web API 的页面 包括 http weblogs asp net jgalloway archive 2012 03 23 asp net web api screencast series
  • 为什么 Angular 构建会创建带有“es5”和“es2015”的文件,而不是“es6”(或者根本没有后缀)?

    我最近下载了Angular CLI 角度 cli 9 0 1 然后我继续创建一个新的应用程序 以便我可以创建一个新的 Angular 元素 将其打包并在另一个应用程序中使用它 在关注了几篇博客之后 我遇到的每个博客的最后一步都讨论了从放在
  • 在 Liferay 7 中创建自定义标签库

    我正在使用 Liferay 7 和 OSGi 模块编写一个应用程序 我需要创建一个跨所有模块 portlet 可用的自定义标签库 但我几乎不知道从哪里开始 你有什么主意吗 我应该将 taglib 定义 类和 JSP 存储在 OSGi 模块中
  • Laravel 502 网关错误错误

    我使用 Laravel 5 3 和最新的 Homestead 设置 当我向 API 发出 POST 请求时 根据日志文件 我收到此错误 2016 10 29 12 44 34 错误 776 0 28 recv 失败 104 连接 由对等方重
  • 如何停止正在运行的线程?

    from pyautogui import moveTo click rightClick write keyDown keyUp hotkey scroll import pyautogui import pyperclip import
  • 寻找 IPFW 以外的替代解决方案来减慢互联网连接速度

    我需要减慢 模拟坏的 互联网连接 我发现了一些文档 其中它是通过 ipfw pipeline 命令实现的 问题是在最新的 MAC OS 版本中 ipfw 已被弃用 并删除 我想知道 ipfw API 是否有其他替代方案 有谁知道最新的网络链
  • java 中什么样的全局变量是不好的做法?

    对于我的许多java项目 我广泛使用数据库 我通常做的是有一个property xml文件来保存我所有的字符串和设置 然后我就去上课CNST保存与 xml 文件中的静态常量相对应的所有静态常量 这些常量在程序启动时由 xml 文件初始化一次
  • 如何设置 Rake 任务进行播种

    这确实是一个关于 Rake Rails 以及一般依赖关系的新手问题 尝试让我的头脑了解所有这些如何组合在一起 基本上 我想要一个像 Seed rb 一样但单独调用的 Rake 任务 它添加了开发环境的测试数据 而我的seed rb则提供了所
  • getsockopt IPPROTO_SCTP、SCTP_STATUS 的“无效参数”

    设想 我创建了 SCTP 一对多套接字 以大写字母开头的函数调用相应的标准函数 检查错误并将 errno 打印到 stderr int sock fd msg flags char readbuf BUFFSIZE struct socka