小编Mar*_*ney的帖子

listen()忽略了积压参数?

我有以下问题:

我有 sockfd = socket(AF_INET, SOCK_STREAM, 0)

在我设置并绑定套接字后(让我们说sockfd.sin_port = htons(666)),我立即执行:

listen(sockfd, 3);

sleep(50); // for test purposes
Run Code Online (Sandbox Code Playgroud)

我正在睡觉50秒来测试积压参数,这似乎被忽略了,因为我可以在端口666上建立连接*超过3次.

*:我的意思是我从客户端发送的每个第N个SYN(n> 3)获得一个syn/ack并放置在侦听队列中,而不是被丢弃.可能有什么不对?我已经阅读了listen(2)和tcp(7)的手册页,发现:

使用Linux 2.2更改了TCP套接字上的backlog参数的行为.现在它指定了等待接受的完全建立的套接字的队列长度,而不是未完成的连接请求的数量.可以使用/ proc/sys/net/ipv4/tcp_max_syn_backlog设置不完整套接字的队列的最大长度.启用syncookies时,没有逻辑最大长度,并忽略此设置.有关更多信息,请参阅tcp(7).

,但即使有sysctl -w sys.net.ipv4.tcp_max_syn_backlog=2sysctl -w net.ipv4.tcp_syncookies=0,我仍然得到相同的结果!我必须遗漏一些东西或完全误解了listen()积压的目的.

c sockets linux listen

26
推荐指数
2
解决办法
8409
查看次数

c ++ Meyers singleton undefined reference

我有以下代码实现了基本的Meyers单音:

#ifndef _cConfigFile_HH
#define _cConfigFile_HH

class cConfigFile {
public:
  static cConfigFile& getInstance() {
    static cConfigFile instance;
    return instance;
  };
private:
  cConfigFile();
};

#endif
Run Code Online (Sandbox Code Playgroud)

我的编译器不允许我编译它,给出以下错误:

/include/cConfigFile.hh:7: undefined reference to `cConfigFile::cConfigFile()'
Run Code Online (Sandbox Code Playgroud)

从错误我明白我需要在.cpp文件中声明"实例",但我无法声明cConfigFile :: instance,因为编译器说:

'cConfigFile cConfigFile :: instance'不是静态的

我究竟做错了什么??我迷路了

c++ singleton

0
推荐指数
1
解决办法
2243
查看次数

标签 统计

c ×1

c++ ×1

linux ×1

listen ×1

singleton ×1

sockets ×1