套接字选项的常量记录在哪里?

时间:2015-10-05 15:35:42

标签: ruby sockets

已发布,原始帖子位于Ruby Forum,但到目前为止未触发任何回复

使用方法setsockopt,我可以在套接字上设置各种选项 示例Socket::SO_REUSEADDR。我想知道

  • 有哪些常量(含义,拼写),
  • 他们采取了哪个值,
  • 什么是默认值(对于给定的套接字类型)
我用Google搜索了一段时间,但除了一些例子,我找不到 有关此主题的任何文档,即使在official docs中也是如此。有人知道我应该在哪里看吗?

2 个答案:

答案 0 :(得分:1)

让我们一步一步地进行。

Socket来自stdlib

使用rvm托管安装,文件位于此处:

$HOME/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/socket.rb

(这应该可以帮助您在不同类型的安装中找到它)。

如果您查看文件的来源,您会看到它以require 'socket.so'开头。这意味着ruby库socket取决于Unix shared library socket.so

获取更多信息的最佳方法是通过Unix手册页。在这种情况下:

man setsockopt

答案 1 :(得分:0)

解决:虽然发布的所有回复都没有直接回答问题(我的系统上的getsockopt / setsockopt手册页(Cygwin)没有包含套接字标志的描述,套接字常见问题解答仅解释了一些旗帜,而不是所有这些的列表),它们都帮助我找出了答案。

首先,我在网上发现了这个getsockopt man page,这非常详细。

此外,由于我从答案中了解到,socket.rb只是本机C上的一个层,我得出结论,真正可用的套接字选项取决于使用的编译器/库和socket.h文件,什么时候编译Ruby。

虽然我不知道如何在Cygwin平台上实现Ruby,但假设使用#include "headers.h" #include "functions.h" #include "variables.h" main(){ <code> } 并且此文件确实包含可用选项列表(并且简洁描述其含义)。