将博客搬至CSDN 将博客搬至CSDN文章地址:https://blog.csdn.net/as3522将个人博客搬至csdn,主要是一些个人的学习笔记吧,大多数内容都是转载的,算是个人学习的一些记录,没多少原创的文章。那么有关文章,既然是抄袭过来的,一般底部都会写明出处...
writev遇到非阻塞IO 这几天在处理一些协议上面的东西,还算简单吧,封装一些字段然后发出去。问题就出现在了发出去这个地方,发的地方使用的是writev,writev可以发送多个分散的,不连续的内存里面的东西。比方说,我封装了http的头部,放到了一个httpHeadBuf里面,然后又组装了body,放到了sendBuf里面,在组包的时候,各自组包互不干涉。然后发送的时候,使用writev进行发送,writev以顺序...
PF_PACKET PF_PACKET瞅代码的时候,看到一个很奇特的socket,sock=socket(PF_PACKET, SOCK_RAW, htons(0x8888))那什么是PF_PACKET?我在网上翻了一下,找到了一片不错的文章,详细sock_raw(注意一定要在root下使用)原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对于监听网络的流量和分析是很有作用的.一共可以有3种方式创...
SO_BINDTODEVICE man socket(7)里对该选项的描述:SO_BINDTODEVICE Bind this socket to a particular device like “eth0”, as speci‐ fied in the passed interface name. If the name is an empty string or t...
Socket-filter 看代码的时候突然遇到了一个很奇怪的结构体struct sock_filter当时就是一脸茫然,这是什么?通过百度大概了解了一下皮毛,这个是过滤器,可以配置规则来过滤一些报文,只提取自己感兴趣的报文。比较详细的介绍可以参考Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)本文大概简单介绍一下。设置BPF过滤器是通过setsockopt调用来完成的,格式...
sendto和recvfrom sendto头文件#include < sys/types.h >#include < sys/socket.h >定义函数int sendto ( int s , const void msg, int len, unsigned int flags, conststruct sockaddr to ...
memalign-calloc-malloc-realloc-free-alloca memalign 在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用memalign或valloc。这些函数在头文件“stdlib.h”中声明。 在GNU库中,可以使用函数free释放memalign和valloc返回的内存块。但无法在B...
网络编程设置TTL 最近遇到一个问题,领导让我查一下关于多播的TTL配置的问题,我也是看了diam之后才知道的原来TTL可以通过编程来实现,说起来网络编程能力欠佳啊TTLTTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段.在IPv4包头中TTL是一个8 bit字段,它位于IPv4包的第9个字节。如下图所示,每一行...
开源协议GPL 最近添加了一个功能,需要用到开源库,然后是GPLv2。由于GPL的传染性,所以后面就直接拉了一个进程来添加这个新功能。所以相关的协议还是要去了解的。GPL 协议即通用性公开许可证(General Public License,简称GPL)。GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向...
linux本地套接字 Linux网络编程——Unix本地套接字概述 今天给大家讲解网络编程中的一个内容——Unix 本地套接字。 发现很多人不知道或者不太了解 Unix 本地套接字这个概念,这也难怪,socket API 原本就是为多台主机之间网络通信设计的,并且这种网络 socket 同样支持单台主机上的进程间通信,当然这样做的话,仍然需要 IP 地址和端口号(通过 loopback 地址 127.0...
linux-unlink Linux下unlink函数的使用一、头文件#include<unistd.h>二、函数原型int unlink(const char *pathname);三、函数介绍unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。注意:执行unlink()函数并不一定会真正的删除文件,...
popen popen()可以执行shell命令,并读取此命令的返回值; popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。可以通过这个管道执行标准输入输出操作。这个管道必须由pclose()函数关闭,必须由pclose()函数关闭,必须由pclose()函数关闭,而不是fclose()函数(若使用fclose则会产生僵尸进程)。pclos...
sqlite3 pragma 原文PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作。它采用与SELECT、INSERT等语句一样的形式来发出请求,但也有几个重要的不同:特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加。因此,后向兼容无法保证。 未知的PRAGMA命令不会有错误消息出现,它只是简单的忽略。 有些PRAGMA只在S...
哈佛和冯诺依曼架构 哈佛结构哈佛(英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程...
MarkDown语法 https://blog.csdn.net/qcx321/article/details/53780672markdown语法实例[TOC]1 强调星号与下划线都可以,单是斜体,双是粗体,符号可跨行,符号可加空格 **一个人来到田纳西**__毫无疑问__*我做的馅饼是全天下*_最好吃的_ 一个人来到田纳西毫无疑问我做的馅饼是全天下最好...
Linux_strace strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。在Linux系统中,用户程序运行在一个沙箱(sandbox)里,用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备(如读取磁盘文件或接收网络数据等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。s...
lsof命令 Linux lsof命令详解简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TC和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述...