【发布时间】:2017-07-26 13:22:53
【问题描述】:
我正在与我的 Mbed 控制器战斗,它正在获胜:/ 下面是我的部分代码:
eth.connect();
pc.printf("ethernet OK");
sock.set_blocking(false,200);
pc.printf(" socket setting OK ");
sock.connect("192.168.1.100", 80);
pc.printf("GO! GO! GO!");
conn = sock.is_connected();
当服务器开启时,我可以使用套接字连接,没有问题。但是当我关闭服务器时,我的程序在 sock.connect(...) 行中等待了很长时间,然后它继续前进。我希望它继续前进,但我不想等待这么长时间:/
我发现我应该将套接字设置从阻塞更改为非阻塞,并将超时从 default=1500 更改为更少。我尽可能地改变了它:
- 我的 socket.h 库的一部分:void set_blocking(bool blocking, unsigned int timeout=200);
- 我的 socket.cpp 库的一部分:Socket::Socket() : _sock_fd(-1), _blocking(false), _timeout(200)
仍然一无所有。它等待大约 17-18 秒,但我想将其更改为最大。 1-2 秒。
如果您给我任何提示,我会很高兴:)
【问题讨论】: