Java 用于快速创建到多个服务器的多个套接字连接的脚本
我在文件中有一个服务器地址列表,如下所示:Java 用于快速创建到多个服务器的多个套接字连接的脚本,java,python,shell,tcp,network-programming,Java,Python,Shell,Tcp,Network Programming,我在文件中有一个服务器地址列表,如下所示: 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脚本,但它的速度非
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脚本,但它的速度非常慢,我的期望是,您应该能够以非阻塞方式发出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
}
(i=0;i<7000;++i)的{
//创建套接字
sock_数组[i]=socket(PF_INET,sock_STREAM,0);
//设置套接字不阻塞
flags=fcntl(sock_数组[i],F_GETFL,0);
fcntl(sock_数组[i],F_SETFL,flags | O_NONBLOCK);
//连接吗
连接(sock_数组[i]、&sock_地址[i]、sock_地址[i]的大小);
}
对于(i=0;i<7000;++i){
//查看连接是否已完成。
getsockopt(s、SOL\u SOCKET、SO\u ERROR、err和len);
//假设err==0,您与第i个主机的连接完成
}
实际上,在第一个循环中,您会将每个套接字添加到
fd_集合
,并使用select
确定每个连接
何时完成(成功或失败)。创建所有连接所需的时间应以建立时间最长的连接为界限。(添加错误处理等)我想延迟是因为等待时间。您可以使用threading
modulethanks在python中等待连接时执行代码。我试试看。谢谢。我试试看。实际上,我不需要等待连接建立。只需尝试创建到服务器的连接