【发布时间】:2010-10-30 07:22:10
【问题描述】:
好的,首先我想提一下我所做的事情是完全合乎道德的,是的,我正在扫描端口。
当端口打开时程序运行良好,但是当我到达关闭的套接字时,程序会暂停很长时间,因为没有超时条款。下面是下面的代码
int main(){
int err, net;
struct hostent *host;
struct sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(xxxx);
sa.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx");
net = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
err = connect(net, (struct sockaddr *)&sa, sizeof(sa));
if(err >= 0){ cout << "Port is Open"; }
else { cout << "Port is Closed"; }
}
我在堆栈溢出时发现了这一点,但使用select() 命令对我来说没有意义。
问题是我们是否可以让 connect() 函数超时,这样我们就不用等一年就让它返回错误?
【问题讨论】:
-
不需要解释你为什么需要它——这就像问银行的方向,每次都解释你想取钱而不是抢劫......
-
:D 说得好。但我没有取款:D