首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux上的SO_REUSEPORT

linux上的SO_REUSEPORT
EN

Stack Overflow用户
提问于 2010-07-16 12:36:43
回答 5查看 27.4K关注 0票数 16

我想知道Linux2.6中是否启用了SO_REUSEPORT选项??

如果我尝试使用它并编译我的代码,我会得到以下错误

代码语言:javascript
复制
01.c:72: error: `SO_REUSEPORT' undeclared (first use in this function)
01.c:72: error: (Each undeclared identifier is reported only once
01.c:72: error: for each function it appears in.)

使用上面的选项,我想我可以将两个不同的套接字绑定到相同的IPADRESS和端口号

EN

回答 5

Stack Overflow用户

发布于 2013-07-08 16:14:47

此选项是在内核3.9中完成的,请参阅此git提交

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d

票数 8
EN

Stack Overflow用户

发布于 2010-07-16 12:49:34

来自/usr/include/asm-generic/socket.h

代码语言:javascript
复制
/* For setsockopt(2) */
#define SOL_SOCKET      1

#define SO_DEBUG        1
#define SO_REUSEADDR    2
#define SO_TYPE         3
#define SO_ERROR        4
#define SO_DONTROUTE    5
#define SO_BROADCAST    6
#define SO_SNDBUF       7
#define SO_RCVBUF       8
#define SO_SNDBUFFORCE  32
#define SO_RCVBUFFORCE  33
#define SO_KEEPALIVE    9
#define SO_OOBINLINE    10
#define SO_NO_CHECK     11
#define SO_PRIORITY     12
#define SO_LINGER       13
#define SO_BSDCOMPAT    14
/* To add :#define SO_REUSEPORT 15 */

嗯。看起来它是未定义的或处于折旧的最后阶段。

下面是a post on KernelTrap所说的:

Linux上的

、SO_REUSEADDR提供了SO_REUSEPORT在BSD上提供的大部分功能。

在任何情况下,创建多个TCP侦听器都是没有意义的。

多个线程可以同时在同一个侦听器上接受()。

--

Rémi Denis-Courmont

http://www.remlab.net/

票数 5
EN

Stack Overflow用户

发布于 2012-10-17 17:46:16

试试这个:

代码语言:javascript
复制
#ifdefined (SO_REUSEPORT)
... set this option
#endif

有些平台(比如OS/X)如果你要绑定多个UDP监听器到一个端口,就需要设置这个参数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3261965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档