好的首先,我想提一下我所做的是完全合乎道德的,而且我是端口掃描。在C++ Linux中的套接字超時
當端口打開時程序運行正常,但當我到達一個關閉的套接字時,程序停止很長時間,因爲沒有超時條款。下面是下面的代碼
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()函數超時,所以我們不會等一年纔會返回一個錯誤?
沒有必要,爲什麼你需要它來解釋 - 這就像問路銀行和每一個解釋要取錢,而不是搶它的時間.. – stefanB 2009-06-01 00:19:26
:D很好。但沒有即時提款:D – 2009-06-01 13:26:47