一周思进

每周学习总结,相信可以走的更远.

wireshark网络分析笔记

以前做的笔记,翻出来再温习下。 本文是阅读《wireshark网络分析就这么简单》和《wireshark网络分析的艺术》做的一些笔记。 技巧篇 1、如只要分析ip头或tcp头,可减少每个抓包数据的大小,通过设置limit each packet to的值即可(capture->options->双击抓包网卡) 2、设置包的颜色 view —> Coloring Rul...

Linux命令-nm

nm 命令可以用来帮助了解一个变量、函数是在代码段、数据段,还是未初始化数据段等等。下面以如下示例代码来查看 // main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "test.h" int g_var1; int g_var2 = 1; static...

doxygen自动生成代码注释文档

日常开发除了编写优良的代码,同样需要写好可读的注释。但对于开发人员而言,要写好注释,也是一件挺繁琐的事,尤其是那类注释基本都是固定的格式,如源文件开头部分的声明,还有函数声明等。 而 doxygen 工具正好可以帮助生成固定的注释模板,可以少敲很多内容,极大的提高开发人员写注释的效率,下面以 vscode 为例进行安装使用说明。 一、vscode 安装 doxygen 插件 直接在插件...

网络编程-TIMEOUT属性设置

之前对于通信两端如果发生长时间无数据通信的情况,可以通过设置 keepalive 机制来识别网络是否异常,如果网络异常,则主动关闭连接,可以看网络编程-keepalive一文。 不过在网络编程-断网重传中提到,如果是一方发送数据,但收不到对方应答,则断网重传一般过程就需要消耗15分钟的时间。而在明确收不到对方应答的情况下,你可能也不希望等如此之久,比如你可能希望20s没收到对方应答就关闭连...

网络编程-局域网IP扫描

如果想知道当前局域网有多少设备,则可以通过 arp 来实现。对于 arp 的作用,可以看下之前写的网络工具-arp作用。 首先同一局域网下的设备,一定是划分的同一子网,则最多有多少个主机是可以确定。具体方法如下: 1、获取本机 IP 及子网掩码 2、根据上述信息确认需要扫描的主机IP 3、通过 arp 查询需要扫描的 IP,如得到应答就记录下来 对于本机 IP 及子网掩码的获取,可以看 ...

网络编程-获取本机IP及MAC的几种方式

一、通过 gethostbyname 获取本机IP(支持IPV4和IPV6,但已不推荐) 具体代码如下: int get_local_ip(void) { char hostname[64] = {0}; struct hostent *p_host_entry = NULL; int ret = -1; int i = 0; char str_ip...

网络编程-通过grep命令确认需要包含的头文件

在网络编程中经常会存在使用一些接口或者宏定义不知道该包含哪个头文件的情况,此时可以通过 grep 命令查找 /usr/include 目录来确认。 比如需要使用 TCP_USER_TIMEOUT 选项,如下所示,在我系统中只有 linux/tcp.h 头文件中有定义,而一般应用程序不该包含 linux 目录层的头文件,所以应用中如果需要使用该宏,可以自己进行宏定义。 或者要查找某些结...

C编程-可变参数检查

在 C 语言编程中,有时候需要提供一些支持参数可变的接口,如自定义的日志记录接口,为方便外部调用,最终要记录的日志可以在接口内部进行组装,而不用外部先行组装好,类似于 printf 实现,内部直接借助 vsnprintf 接口将多个参数拼接成字符串,代码如下: #include <stdarg.h> void write_log(char *format, ...) { ...

C编程-extern使用问题

日常工作开发经常会存在不规范使用 extern 的情况,比如下面示例代码 //fun.c int fun(int a) { return a+1; } //main.c #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char con...

python学习_print打印

初学 python,可能会比较多的用 print 函数来进行调试打印,更多的可能就是去打印相关值对不对,我是这样的~ 下面对此记录下 print 函数的几种打印方式。 先可以看下 python 的帮助手册 或者直接看官方手册更好 print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False) print...