參考了 ss的源码

以及 netlink相关资料:http://blog.csdn.net/scdxmoe/article/details/27711205

实现结果为:

gcc netlink_dig_530_7.c -o netlink_dig_530_7

./netlink_dig_530_7

state      family     l.addr     l.port       r.addr     r.rport   

LISTEN     AF_INET   localhost      53         0.0.0.0        0         

LISTEN     AF_INET   (null)         21         0.0.0.0        0         

LISTEN     AF_INET   (null)         22         0.0.0.0        0         

LISTEN     AF_INET   (null)         22         0.0.0.0        0         

LISTEN     AF_INET   localhost      631        0.0.0.0        0         

LISTEN     AF_INET   (null)         12865      0.0.0.0        0         

ESTAB      AF_INET   ubuntu.local   59208      91.189.89.134  80        

ESTAB      AF_INET   ubuntu.local   22         192.168.0.248  9689      

ESTAB      AF_INET   ubuntu.local   22         192.168.0.248  9295      

ESTAB      AF_INET   ubuntu.local   35531      91.189.94.25   80        

ESTAB      AF_INET   ubuntu.local   22         192.168.0.248  9691  

本文的实验 并没有实现怎么样获取TCP的窗体值cwnd和RTT值,在ss源代码中我看到了他利用了/proc

文件来实现获取窗体和RTT值。怎么样用netlink套接字实现呢?还请教各位指点

源码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <asm/types.h>
#include <sys/socket.h>
#include <linux/netlink.h>
#include <linux/inet_diag.h>
#include <netinet/tcp.h>
#include <netdb.h>
#include<arpa/inet.h>
struct sk_req {
struct nlmsghdr nlh;
struct inet_diag_req r;
};

typedef struct{
__u8 family;
__u8 bytelen;
__s16 bitlen;
__u32 flags;
__u32 data[8];
} inet_prefix;

/*struct namerec
{
struct namerec *next;
const char *name;
inet_prefix addr;
};*/

struct tcpstat
{
inet_prefix

linux netlink套接字实现相似ss命令 ,统计套接字以及TCP信息的更多相关文章

  1. SS命令和Netstat命令比较

    在早期运维工作中,查看服务器连接数一般都会用netstat命令.其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令!ss命令可以用来获取socket统计信息, ...

  2. Docker 容器中无ss命令解决方法

    在早期运维工作中,查看服务器连接数一般都会用netstat命令.其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令!ss命令可以用来获取socket统计信息, ...

  3. zabbix3.0使用ss命令对tcp连接数和状态的监控性能优化

    zabbix3.0对tcp连接数及状态的监控优化 之前对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以 ...

  4. 使用ss命令对tcp连接数和状态的监控性能优化

    之前对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以改用ss命令对脚本进行优化 对tcp连接数和状态的 ...

  5. linux netlink套接字学习资料

    理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...

  6. NetLink通信原理研究、Netlink底层源码分析、以及基于Netlink_Connector套接字监控系统进程行为技术研究

    1. Netlink简介 0x1:基本概念 Netlink是一个灵活,高效的”内核-用户态“.”内核-内核“.”用户态-用户态“通信机制.通过将复杂的消息拷贝和消息通知机制封装在统一的socket a ...

  7. ss命令用来显示处于活动状态的套接字信息。

    ss命令用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比net ...

  8. Linux系统编程(37)—— socket编程之原始套接字

    原始套接字的特点 原始套接字(SOCK_RAW)可以用来自行组装IP数据包,然后将数据包发送到其他终端.也就是说原始套接字是基于IP数据包的编程(SOCK_PACKET是基于数据链路层的编程).另外, ...

  9. 每天一个linux命令(57):ss命令

    ss是Socket Statistics​的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的 ...

随机推荐

  1. swift不同地方 命名空间module iOS

    Objective-C没有命名空间,为了避免冲突,Objective-C的类型一般都会加上两到三个字母的前缀,比如Apple保留的NS和UI前缀,各个系统框架的前缀,各个系统框架的前缀SK(Store ...

  2. mysql事件【定时器】

    一,借鉴[luo奔的蜗牛] 1.创建一张表 create table mytable ( id int auto_increment not null, name ) not null default ...

  3. What is state and props

    State, in React component, is internal dataset which affects the rendering of the component. To some ...

  4. 三、spring中高级装配(1)

    大概看了一下第三章的内容,我从项目中仔细寻找,始终没有发现哪里有这种配置,但是看完觉得spring还有这么牛B的功能啊,spring的厉害之处,这种设计程序的思想,很让我感慨... 一.环境与prof ...

  5. 一、认识spring框架

    对于spring框架,作为Java开发人员肯定不陌生,大名鼎鼎,名声在外,但是对于spring框架没有进行过系统的学习,从今天开始学习并且记录一下spring框架的比较牛逼的特性. 一.spring简 ...

  6. 管理Fragments

    FragmentManager 为了管理Activity中的fragments,需要使用FragmentManager. 为了得到它,需要调用Activity中的getFragmentManager( ...

  7. ERROR 1133 (42000): Can't find any matching row in the user table

    环境:操作系统:Redhat 7.5 x86-64 数据库版本MySQL 5.7.25 现象:ERROR 1133 (42000): Can't find any matching row in th ...

  8. virtualbox虚拟机桥接方式网络设置

    一.编辑网卡 cd   /etc/sysconfig/network-scripts 查看本地win10ip及子网掩码: 如果查看到的ip不是192开头的,可以手动设置为192开头的ip 2.设置虚拟 ...

  9. 树莓派 -- oled 续(2) python

    上文中的代码通过wiringPi的API调用devfs API来显示图片. 这里分析的Python代码也通过类似的方法来显示图片. 主要用到了两个Library. import spidev impo ...

  10. HTML、CSS常用技巧

    一.HTML 在介绍HTML之前,我们先看一下HTML的文档树结构,主要包括哪些: (一).头部标签 1,Doctype Doctype告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档 ...