參考了 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. Beta冲刺提交-星期三

    - 这个作业属于哪个课程 <https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1> 这个作业要求在哪里 <htt ...

  2. html 零散问题

    1.iconfont的使用 https://www.cnblogs.com/yujihang/p/6706056.html 2.阴影效果比较 box-shadow:0 0 6px #000 inset ...

  3. asp 数据库 模块化 - 思路是没一个页面有一个自己的数据类 这里用nPath表示

    <!--#include file="db_class.asp" --> <% '当前页面数据 nPath = "..\..\.." 't模块 ...

  4. 06C#类

    C#类 1.2      类的继承 在1.3节,定义了一个描述个人情况的类Person,如果我们需要定义一个雇员类,当然可以从头开始定义雇员类Employee.但这样不能利用Person类中已定义的函 ...

  5. JFinal项目eclipse出现Unknown column 'createtime' in 'order clause' 的错误

    JFinal项目eclipse出现Unknown column 'createtime' in 'order clause' 的错误,在本次项目中的原因是我的表中的字段信息中创建时间的字段是creat ...

  6. JAVA基础——对象流

    对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息. 使得对象持久化.    ObjectInputStream   : 对象输入流    ObjectOutPutStream  :对象输 ...

  7. MATLAB优化——减少for的使用

    Table of Contents 1. MATLAB 2. 矩阵计算--全0行整体替换 MATLAB MATLAB作为一个强大的工具(可惜是收费的),在矩阵运算.绘制函数和数据.实现算法.创建用户界 ...

  8. 洛谷——P3907 圈的异或

    P3907 圈的异或 无向图$dfs$找环,并判断边权异或和是否为0 #include<iostream> #include<cstdio> #include<algor ...

  9. 2018湖南省第14届大学生计算机程序设计竞赛 A字符画

    Description 读入 w,请输出 2018 的字符画,两个数字之间有 w 个空格.具体格式请参考样例输出. 1 ≤ w ≤ 2018 Input 输入文件只包含 1 个整数 w. Output ...

  10. 如何优雅的使用vue+Dcloud(Hbuild)开发混合app

    如何优雅的使用vue+Dcloud(Hbuild)开发混合app 最近在做混合app,前端框架用的是vue,打包app使用的是Dcloud,不过在开发过程中有一点不爽的是,如果想使用Dcloud提供的 ...