问题标签 [getsockopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
736 浏览

tcp - 为什么 getsockopt() 上的 TCP_INFO 选项返回矛盾的值?

我做一个

当我打印tcpi_state并且tcpi_ca_state我得到

getsockoptSO_ERROR不返回错误 (0)。

我该怎么办?

当我使用 sfd 执行 getpeername 时,我返回“传输端点未连接”。

tcp_info 结构不可靠吗?

0 投票
0 回答
1043 浏览

c - Windows 上的套接字选项 TCP_NODELAY 需要 8 位布尔值?

这是我的示例代码(对不起,它很长):

印刷:

任何人都可以重现这个吗? 注意:我在 Win7, x64 上用 VS2010 编译 x32 应用程序。

getsockopt上的文档说我应该使用BOOL. IPPROTO_TCP上的文档说我应该使用DWORD. 但是两者都不起作用。当您设置OPT_TYPE为 8 位类型(例如char)时,它可以工作。我错过了文档上的某些内容吗?

0 投票
0 回答
132 浏览

tcp - 从 getsockopt 返回的 TCP_INFO 给出哪个方向(入站或出站)?

tcp_info 结构提供有关当前 TCP 连接的有用统计信息。但是,我不确定flow这些统计数据指的是哪个。

对于双向连接,意味着 afd既可以读取也可以写入,一些 stat 指的是什么?出站流量还是入站流量?

例如。确实tcp_info.tcpi_rcv_space是指本地机器的入站流的接收缓冲区大小,即本地机器的接收缓冲区,或者是出站流到远程机器的接收缓冲区的广告大小,即远程的接收缓冲区机器

非常感谢!

0 投票
2 回答
47 浏览

c - getsockopt api设计问题

我们可以看到 api 被定义为打击

问题一:

  1. 假设给定一个级别和optname,那么我们知道了optlen,为什么还需要用户提供optlen参数呢?

  2. 甚至用户提供了 optlen,为什么它是指向 socklen_t 而不是直接指向 socklen_t 的指针?实现会以某种方式改变 optlen 的值吗?

谢谢

0 投票
1 回答
300 浏览

python - 如何通过getsockopt知道“序列号”?

我在地址“127.0.0.0”上监听我自己的绑定套接字,并发送一些流量。套接字是 SOCK_STREAM。我可以使用getsockopt获取传入数据包的序列号和确认号吗?如果你现在,请写下这个函数的参数。在 python 谢谢你:)

0 投票
1 回答
110 浏览

qt - 从 Qt 获取 SO_RCVBUF 套接字选项值

我想获取 Qt 使用的 SO_RCVBUF 套接字选项的值,以确保它默认使用系统值(我已更改)。

但以下代码返回“无效”QVariant:

这是否意味着socketOption()Qt 方法仅在使用 设置时才获取值setSocketOption()

还是我犯了一个错误?

0 投票
0 回答
112 浏览

c - printf("%m") 报错但 errno 设置为 0

我正在非阻塞地连接到 TCP 套接字。 printf("%m")打印出来Operation now in progresserrno设置为0. 我也在打印之前保存errno' 的值,以确保printf不会摆弄它。这很奇怪 -printf应该输出Success。我的意思是显然问题是当我访问时errno我得到0. 如果这很重要,我在一个相当旧的内核(大约 2.6)上使用 uclibc。我真的找不到vsprintf访问方式errno与我访问方式之间的任何区别*__errno_location()

或者,我如何判断我的套接字是否存在实际问题,connect或者它是否仍在连接?

例子:

输出:

我期望以下输出:

因为 115 是 EINPROGRESS

0 投票
2 回答
109 浏览

c - 为什么getsockopt optlen 为零?

我使用非阻塞套接字和事件库。我刚刚注意到,当我快速调用连接到我的本地 ip 端口getsockopt(fd, SOL_SOCKET, SO_ERROR, &val, &optlen);时, optlen 随机变为 0。

我试图制作能够显示问题的更小的代码。我在这段代码中使用了 epoll,但同样的问题也发生在其他事件库中。

当我跑步时;

optlen 0 是否意味着套接字因某种原因关闭?我们需要在它之后关闭套接字吗?

0 投票
1 回答
345 浏览

sockets - 在使用C语言的socket编程中,如何设置服务器接受客户端建立连接的时间限制?

我正在开发一个涉及 1 个客户端和 1 个服务器的应用程序。

我希望服务器只监听 5 秒钟的连接。如果客户端未尝试建立连接,则服务器应停止侦听并返回错误消息。如果客户端尝试建立连接,那么服务器应该接受连接。

如果客户端没有尝试建立连接,服务器将永远监听。我想让服务器只听5秒,怎么实现呢?

这是服务器端的输出——服务器永远在等待客户端:

图片

0 投票
0 回答
67 浏览

c++ - getsockopt TCP_MAXSEG 返回一个不准确的值(linux)

我创建了一个套接字-> 设置套接字 mss-> 连接-> 调用GetMss并从设置的值中得到了一个较低的值(通常获取 mss 结果给出了设置的值负 12 ......但有时甚至是 -30 和 -50)。

我尝试设置的每个 mss 值都发生了这种情况……从 536 到 1280……。为什么会发生这种情况?为什么调用 get mss 时得到的值不准确?这是对齐问题吗?套接字 mss 确实设置为低于我尝试设置的原始 mss 的值?

为什么有时 getmss 结果是我尝试在套接字 mss 中设置的 mss 负 12,有时是负 20,有时是 -50?