2016-09-21 38 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