參考了 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

最新文章

  1. 基于spring+quartz的分布式定时任务框架
  2. centos 搭建git服务器
  3. 不用ide编译java程序时调用jar包
  4. Windows 10 技术预览
  5. javascript 中string 型数据转换成int类型
  6. EF Code First DataAnnotations
  7. lintcode:买卖股票的最佳时机 III
  8. 设置N秒后执行某个方法或函数
  9. LeetCode 面试:Add Two Numbers
  10. bzoj2534: Uva10829L-gap字符串
  11. JSONObject和JSONArray的简单使用(json-lib)
  12. iOS基础 - UIButton - UIImageView
  13. Light OJ 1006 - Hex-a-bonacci
  14. Ubuntu下永久修改主机名和创建用户
  15. C++的默认构造函数
  16. Quartz应用与集群原理分析
  17. [grub2] grub2修改启动顺序
  18. VS Code插件
  19. python----函数与函数式编程
  20. 使用py2exe转换python文件为可执行程序

热门文章

  1. CAD交互绘制文字(com接口)
  2. zabbix4.2学习笔记--监控nginx
  3. pycharm connect to github
  4. ionic3 ion-slides遇坑
  5. LNMP环境搭建网站
  6. Java设计模式之策略模式(Strategy Pattern)
  7. 初识 Spring 框架
  8. delphi clipboard
  9. python3.x Day5 异常处理
  10. time | sys | os 模块,递归删除文件,项目分析