1. $ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

代码实现

  1. int get_tcp_socket_sum ()
  2. {
  3. int socket_num=0;
  4. FILE *tcp;
  5. char tmp[1024]; //设置一个合适的长度,以存储每一行输出
  6. int value;
  7. char name[1024];
  8. tcp = popen("netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'", "r");
  9. if (tcp == NULL) {
  10. return 0;
  11. }
  12. while (fgets(tmp, sizeof(tmp) - 1, tcp)) {
  13. if (sscanf(tmp, "%s %u", name, &value) != 2)
  14. {
  15. continue;
  16. }
  17. if (0 == strcmp(name, "ESTABLISHED"))
  18. {
  19. socket_num = value;
  20. break;
  21. }
  22. }
  23. pclose(tcp);
  24. return socket_num;
  25. }

参考文献