摘要:
原文链接用途说明iconv命令是用来转换文件的编码方式的(Convert encoding of given files from one encoding to another),比如它可以将UTF8编码的转换成GB18030的编码,反过来也行。JDK中也提供了类似的工具native2ascii。Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数,可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处,而iconv命令在调试此类程序时用得着。常用参数首先,我们要知道支持的字符编码有哪些,这个可以用-l参数得到(List k 阅读全文
摘要:
原文链接正则表达式用于字符串处理、表单验证等场合,实用高效。以下表达式本人收集于网络,做了简单整理,以备不时之需。没有全部验证,可能会存在部分错误,读者请自己调试鉴别更正。匹配中文字符的正则表达式: [u4e00-u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^x00-xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:ns*r评注:可以用来删除空白行匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />评注:网上 阅读全文
摘要:
原文链接tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。一、概述顾名思义,tcpdump可以将网络中传 阅读全文
摘要:
原文链接20 世纪 90 年代,UNIX 应用程序开始支持长选项,即一对短横线、一个描述性选项名称,还可以包含一个使用等号连接到选项的参数。GNU提供了getopt-long()和getopt-long-only()函数支持长选项的命令行解析,其中,后者的长选项字串是以一个短横线开始的,而非一对短横线。getopt_long() 是同时支持长选项和短选项的 getopt() 版本。下面是它们的声明:#i nclude <getopt.h>int getopt_long(int argc, char * const argv[], const char *optstring, con 阅读全文
摘要:
原文链接 参考 gnu 文档 longoptLinux下很多程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与用户进行交互的主要手段。具有可靠的复杂命令行参数处理机制,会使得您的应用程序更好、更有用。getopt()是一个专门设计来减轻命令行处理负担的库函数。1、命令行参数命令行程序设计的首要任务是解析命令行参数,GUI派的程序员很少关心这个。这里,对参数采用了一种比较通俗的定义:命令行上除命令名之外的字符串。参数由多项构成,项与项之间用空白符彼此隔开。参数进一步分为选项和操作数。选项用于修改... 阅读全文
摘要:
原文链接struct event_base* event_init(void): 使用前必做的一件事,初始化事件API。void event_set(struct event *ev, int fd, short event, void (*fn)(int, short, void *),void *arg);初始化一个事件 ev.fd 表示文件描述符。event 关注的事件类型.可用‘|’类型组合。EV_TIMEOUT-时间通知EV_SIGNAL-信号通知EV_READ-可读通知EV_WRITE-可写通知EV_PERSIST-额外的标记,表示添加为永久事件,直到调用event_delfn 函 阅读全文
摘要:
原文链接Libevent是用于编写高速可移植非阻塞IO应用的库,其设计目标是:v可移植性:使用libevent编写的程序应该可以在libevent支持的所有平台上工作。即使没有好的方式进行非阻塞IO,libevent也应该支持一般的方式,让程序可以在受限的环境中运行。v速度:libevent尝试使用每个平台上最高速的非阻塞IO实现,并且不引入太多的额外开销。v可扩展性:libevent被设计为程序即使需要上万个活动套接字的时候也可以良好工作。v方便:无论何时,最自然的使用libevent编写程序的方式应该是稳定的、可移植的。libevent由下列组件构成:vevutil:用于抽象不同平台网络实 阅读全文
摘要:
参考链接 1 #include <sys/types.h> 2 #include <sys/time.h> 3 #include <stdlib.h> 4 #include <err.h> 5 6 #include <event.h> 7 #include <evhttp.h> 8 9 void10 root_handler(struct evhttp_request *req, void *arg)11 {12 struct evbuffer *buf;13 14 buf = evbuffer_new();15 if ( 阅读全文