问题标签 [setsockopt]

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 回答
303 浏览

python - 在 Python 中修改 IPv4 标头中的选项字段

我正在用 python 编写一个有点非典型的跟踪路由应用程序。我有兴趣计算数据包在到达目的地之前所经过的跳数。诀窍是我只对使用单个传出数据包进行探测感兴趣。我相信我可以对 IPv4 选项字段进行一些修改来实现这一点。RFC 1393讨论了我认为我想要实现的内容。

问题来自于setsockopt我用来配置传出套接字以使 IPv4 标头按照我想要的方式的记录不充分的函数。

我能想到的最好的方法如下:

(字节串来自RFC 1393的第 2.2 节)

然而,这给了我socket.error: [Errorno 22] Invalid argument

我能做些什么来完成这项工作?如果我的方法很混乱,我表示歉意,我对 python 或使用原始套接字并不完全满意。

0 投票
1 回答
718 浏览

sockets - setsockopt in kernel module

How can we set the ttl field using setsockopt in kernel hook module?

We can put an entry in iptables mangle but is there an alternative better way?

I am currently using ubuntu 14.04, kernel 3.13.2 CPU is 32 bit

0 投票
1 回答
1255 浏览

c - 设置 setsockopt 以检测 ip 选项

我想检测传入互联网数据包的 ip 选项。这是我的代码。

问题是标头长度为 6,但长度应为 20 以检测所有 ip 选项。在 setsockopt 中,启用变量的类型可能应该是 char,但我在运行程序时遇到了一些问题:事实上,使用 char 类型它会给我一个无效参数的错误。我还想知道如何使用getsockoption 打印这些选项。有什么问题?我希望我的问题很清楚:)

0 投票
0 回答
530 浏览

c# - setsockopt 的版本

我需要使用以下方法来定义特定套接字的接收缓冲区。但是给定的与 C++ 兼容,所以请告诉我该方法的 C# 版本。

0 投票
0 回答
1565 浏览

networking - SO_SNDBUF 和 SO_RCVBUF

应用程序是否需要带有 SO_SNDBUF 和 SO_RCVBUF 的 setsockopt 才能利用最大 TCP 缓冲区限制?

我有一个 1Gbps 网络,在我的主机之间有 100 毫秒的延迟,我正在尝试使用我的自定义客户端服务器 C 程序在它们之间全速传输数据

当我为 wmem_max、rmem_max 和 tcp_rmem 和 tcp_wmem 中的第三列使用相同的值 124928 的默认主机设置时,我得到了 ~80Mbps 的不良吞吐量

如下将最大值从 124928 更改为 12582912 后,我得到了更好的 1Gbps 吞吐量。

我当前在源主机和目标主机上的设置是

我没有在我的程序中使用 setsockopt() 来利用 sysctl 设置中的最大限制。我对 setsockopt 和 sysctl 内存设置的理解是,默认情况下,所有程序都会获取 mem_default 中定义的内存缓冲区,并且它们可以通过使用 setsockopt() 调用达到 mem_max 值。但是,我很困惑,即使不使用 setsockopt() 调用,我也可能达到最大限制。即使对于未使用 setsockopt 配置为使用大内存缓冲区的套接字,TCP 是否也会自动调整以动态使用 mem_max 设置?

从 tcpdump 输出中,我确认源中的 (seq-ack) 始终徘徊在 50MB 左右,这证实了 TCP 窗口大于我的 sysctl 设置中的默认值。

0 投票
1 回答
440 浏览

c++ - NS3:如何为每个 TCP 会话设置 RcvBufSize?

我必须运行两个具有不同 RcvBufSize 的 TCP 会话。

我知道以下代码可以为所有 TCP 会话设置 RcvBufSize。

实际上,我正在寻找类似的功能setsockopt() 为每个 TCP 会话设置 SO_RCVBUF 之类的功能。

我也尝试过沮丧Ptr<Socket>Ptr<TcpSocket>但是SetRcvBufSize()是私有函数...

有没有办法解决这个问题?

0 投票
1 回答
541 浏览

sockets - TCP 套接字上的 setsockopt SO_BROADCAST

在我负责处理的现有网络库中,有一个setsockopt我不明白的调用

在这里你可以看到一个 TCP 套接字开始创建:

紧接着,在协议级别调用setsockopt期权,期权价值SO_BROADCASTIPPROTO_TCP5

根据Beej 的网络指南,这个“什么都不做——什么都没有!!——对 TCP 流套接字!哈哈哈!”

问题:

  • 他们究竟在这里做什么?
  • 这有道理吗?
  • 如果有的话,当然应该是option_value=1,那是5什么?
0 投票
1 回答
1523 浏览

c - 为从 accept() 返回的客户端套接字设置 sockopt

我正在尝试为从accept()函数返回的客户端套接字设置套接字选项。但他们没有得到正确设置。

我的目标是在特定时间不活动后让客户超时。但是服务器应该仍然能够接受其他客户端连接。

下面是我设置套接字选项的代码。你能提出什么问题吗?

0 投票
1 回答
3872 浏览

c++ - C++ 套接字缓冲区大小

这更像是一个确认请求而不是一个问题,所以我会保持简短。(我远离我的电脑,所以不能简单地实施这个解决方案来测试)。

我正在编写一个程序,将通过网络摄像头拍摄的图像文件(连同元数据)从树莓派发送到我的电脑。

我计算出图像大约是 130kb,数据包头是 12b,相关的元数据是另一个 24b。尽管将来我可能会增加图像大小,但一旦我有了工作原型。

目前,我无法成功检索整个数据包,因为在将其发送到 PC 后,我只能在缓冲区中获得大约 64kb 的接收数据。

我假设这是因为无论出于何种原因,套接字的默认缓冲区大小声明如下:

是 64kb(如果您“知情”,请有人澄清一下)

所以 - 为了解决这个问题,我打算通过 setsockopt(x..) 命令将套接字大小增加到 1024kb。

请有人确认我对问题的诊断和建议的解决方案是正确的吗?

我问这个问题是因为我现在不在我的电脑上,在我回家之前无法尝试。

0 投票
1 回答
3373 浏览

c - SO_REUSEADDR 的目的是什么?

我正在尝试了解多播代码,但我不了解一小部分的实用程序:

我不了解该setsockopt功能的实用程序。我知道这个函数允许修改内核中的套接字,SOL_SOCKET因为我的修改是关于套接字的级别而不是协议的级别。我不明白SO_REUSEADDR