mirror of
https://github.com/yanfeizhang/coder-kung-fu.git
synced 2026-02-08 13:04:33 +08:00
74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
#include <netinet/in.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <arpa/inet.h>
|
|
|
|
#define MAX_CONNECTION_NUM 100
|
|
|
|
int buildConnect(const char *sIp, int sPort)
|
|
{
|
|
int skFd;
|
|
if((skFd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
|
{
|
|
printf("\n Error : Could not create socket\n");
|
|
return 0;
|
|
}
|
|
|
|
struct sockaddr_in srvAddr;
|
|
srvAddr.sin_family = AF_INET;
|
|
srvAddr.sin_addr.s_addr = inet_addr(sIp);
|
|
srvAddr.sin_port = htons(sPort);
|
|
if(connect(skFd, (struct sockaddr *)&srvAddr, sizeof(srvAddr)) < 0)
|
|
{
|
|
printf("\n Error : Connect Failed \n");
|
|
return 0;
|
|
}
|
|
|
|
return skFd;
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int i = 0, sPort, fd;
|
|
char sIp[16];
|
|
|
|
if(argc != 3)
|
|
{
|
|
printf("\n Usage: %s <server ip> <server port>\n", argv[0]);
|
|
return 1;
|
|
}
|
|
|
|
//1. 从命令行获取并解析local ip、server ip以及端口
|
|
strcpy(sIp, argv[1]);
|
|
sPort = atoi(argv[2]);
|
|
|
|
//2. 开始建立连接
|
|
int *sockets = (int *)malloc(sizeof(int) * MAX_CONNECTION_NUM);
|
|
for(i = 1; i <= MAX_CONNECTION_NUM; i++)
|
|
{
|
|
|
|
fd = buildConnect(sIp, sPort);
|
|
if(fd > 0)
|
|
{
|
|
sockets[i-1] = fd;
|
|
printf("连接 %s:%d成功了 %d 条!\n", sIp, sPort, i);
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
sleep(300);
|
|
|
|
//3. 释放所有的连接
|
|
printf("关闭所有的连接...\n");
|
|
for(i = 0; i < MAX_CONNECTION_NUM; i++)
|
|
{
|
|
close(sockets[i]);
|
|
}
|
|
|
|
return 0;
|
|
}
|