打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于Linux的C语言Socket多线程网络端口压力测试程序

网络压力测试连接安全探测第一步是发起多个线程同时连接一个端口,作为老司机,这里提供一套简单的多线程Socket连接压力测试程序,通过发起多个连接,来判断服务器响应能力。

可以指定多个线程同时连接,代码基于Linux下编译并运行成功,如下(文件名scan.c):

  1. #include

  2. #include

  3. #include

  4. #include

  5. #include

  6. #include

  7. #include

  8. #include

  9. #include

  10. #include

  11. #include

  12. #include

  13. #include

  14. char strIP[20];

  15. int nPort=0;

  16. int nThreadNum=0;

  17. int nThreadCurNum=0;

  18. void* ProcessThreadProc(void *pPara)

  19. {

  20. struct sockaddr_in serverAddr;

  21. int clientSocket;

  22. char sendbuf[200];

  23. char recvbuf[200];

  24. if((clientSocket=socket(AF_INET,SOCK_STREAM,0)) < 0="">

  25. {

  26. nThreadCurNum--;

  27. perror( 'socket error' );

  28. return NULL;

  29. }

  30. serverAddr.sin_family=AF_INET;

  31. serverAddr.sin_port=htons(nPort);

  32. serverAddr.sin_addr.s_addr=inet_addr(strIP);

  33. if(connect(clientSocket,( struct sockaddr * )&serverAddr,sizeof(serverAddr)) <>

  34. {

  35. nThreadCurNum--;

  36. perror( 'Connect error' );

  37. return NULL;

  38. }

  39. printf('Connect with destination host OK .....\n');

  40. while(1)

  41. {

  42. sleep(1);

  43. }

  44. close(clientSocket);

  45. nThreadCurNum--;

  46. return NULL;

  47. }

  48. main()

  49. {

  50. int i = 0;

  51. int nFlag = 0;

  52. int nSuccessNum = 0;

  53. printf('Input IP:>');

  54. scanf('%s',strIP);

  55. printf('%s\n',strIP);

  56. printf('Input Max Port:>');

  57. scanf('%d',&nPort);

  58. printf('%d\n',nPort);

  59. printf('Input Thread NuM:>');

  60. scanf('%d',&nThreadNum);

  61. printf('%d\n',nThreadNum);

  62. nThreadCurNum = nThreadNum;

  63. for(i=0; i < nthreadnum;="">

  64. {

  65. pthread_t num;

  66. nFlag = pthread_create(&num, NULL, ProcessThreadProc, (void *)i);

  67. if(nFlag != 0)

  68. {

  69. printf('Error: Thead Error [%d]....\n',i);

  70. nThreadCurNum--;

  71. }

  72. else

  73. nSuccessNum++;

  74. }

  75. printf('Success Num: %d Failed Num: %d \n',nSuccessNum,nThreadNum-nSuccessNum);

  76. while(true)

  77. {

  78. printf('Current Num: %d\n',nThreadCurNum);

  79. sleep(2);

  80. }

  81. return 0;

  82. }

通过gcc编译,编译时注意加上-lpthread gcc -o scan scan.c -lpthread,然后运行即可。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
IO多路复用
windows下C++的socket编程入门--文件传输
第二章点对点视频网络传输实验
基于UDP的select函数用法
select在udp里面使用双端口接收
TCP连接的建立以及利用tcpdump分析连接建立的过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服