2016-09-21 65 views
-1

我有如下一個文件服務器的地址的列表:腳本創建多個套接字連接到多臺服務器快速

192.168.1.100 
192.168.1.101 
192.168.1.102 
... 
192.168.1.200 

我想寫這從一個PC客戶端創建於所有的多插座連接的程序這些服務器(使用相同的源IP,源端口和目標端口)以使我的調制解調器的NAT表已滿。

任何人都可以告訴我最有效的方法嗎?因爲如果我有一個7K服務器IP地址的列表,我希望套接字連接的數量應該快速增加到7k,例如5分鐘後(我只是想模擬TCP攻擊)。我寫了一個python腳本,但對我的期望很慢

+0

我想延遲是因爲等待時間。您可以使用'threading'模塊 – lolopop

+0

謝謝在等待python連接時執行代碼。我會嘗試。 – loveclassic

回答

0

您應該能夠以非阻塞方式發出7K連接,然後等待它們。假設他們都成功了,他們所有人的等待時間將會重疊。這應該導致整體延遲小得多。

換句話說,嘗試這樣的事情:

for (i = 0; i < 7000; ++i) { 
    // Create socket 
    sock_array[i] = socket(PF_INET, SOCK_STREAM, 0); 
    // Set socket non-blocking 
    flags = fcntl(sock_array[i], F_GETFL, 0); 
    fcntl(sock_array[i], F_SETFL, flags | O_NONBLOCK); 
    // Do the connect 
    connect(sock_array[i], &sock_addr[i], sizeof sock_addr[i]); 
} 
for (i = 0; i < 7000; ++i) { 
    // Find out if connect completed. 
    getsockopt(s, SOL_SOCKET, SO_ERROR, &err, &len); 
    // Assuming err == 0, your connect to i-th host is done 
} 

實際上,在第一循環中,你將每個插槽添加到fd_set並使用select以確定每個connect已完成(成功或不成功)。創建所有連接所需的時間應以最長建立的連接爲界。 (添加錯誤處理等。)

+0

謝謝。我會嘗試。其實,我不需要等待連接建立。試着創建與服務器的連接 – loveclassic

相關問題