- 博客(16)
- 资源 (15)
- 收藏
- 关注
原创 linux 内核 current全局变量
task_struct内核路径:include/linux/sched.hstruct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned int flags; /* per process flags,...
2018-06-20 08:58:45 14520 1
原创 linux 服务器端bind(4)
1. 前言 上一篇博客主要记录了socket创建的流程,详见点击打开链接,本篇博客主要记录linux服务器端套接字创建成功后,需通过bind绑定一个本地地址和端口的工作流程。百科注解: 将一本地地址与一套接口捆绑。本函数适用于未连接的数据报或流类套接口,在connect()或listen()调用前使用。当用socket()创建套接口后,它便存在于一个名字空间(地址族)中,...
2018-06-19 23:45:07 789
原创 linux 服务器、客户端socket(3)
本篇博客主要记录socket创建是的流程,其它socket接口API详见:点击打开链接1. 应用层创建socket套接字int socket(int domain, int type, int protocol);参数说明:domain:协议域,又称协议族(family)。常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)、AF_ROUT...
2018-06-18 18:01:11 602 1
原创 linux tcp ip协议栈学习路线图(1)
即将开启tcp/ip协议栈的学习,本篇博客主要是针对接下来即将分析的协议栈目录。1. tcp/ip协议栈的数据结构:详见2. inet_init()初始化,详见:点击打开链接3. socket()通信流程基于TCP(面向连接)的socket编程,分为客户端和服务器端。客户端的流程如下:(1)创建套接字(socket)(2)向服务器发出连接请求(connect)(3)和服务器端进行通信(send/r...
2018-06-17 16:06:02 1526
原创 linux gpio管脚功能配置API
#ifndef NUC970_GPIO_H#define NUC970_GPIO_H#include <mach/regs-gcr.h>#include <mach/regs-gpio.h>#include <mach/gpio.h>#define GPIO_R _IOW('g', 0, char) //申请#define GPIO_F _I...
2018-06-15 10:13:31 2958
原创 ARP(地址解析协议)
数据链路层的第一道关卡是MAC地址,但基于TCP/IP的网络主要使用IP地址来标识主机而不使用MAC地址。比如要连接到别人的电脑或拷贝共享文件,一般会说:“告诉我你电脑的IP”,而不是“告诉我你电脑的MAC”。从以太网帧结构知道,不知道对方网卡的MAC地址是无法正常通讯的,那主机是怎样从IP地址上自动获取到MAC地址呢?这就是这章要讲的“地址解析协议”,以下简称其英文缩写“ARP”。...
2018-06-12 17:39:42 336
转载 socket关闭之close()和shutdown()的差异
对于一个tcp连接,在c语言里一般有2种方法可以将其关闭:close(sock_fd);// 或者shutdown(sock_fd, ...);123多数情况下这2个方法的效果没有区别,可以互换使用。除了:close() 是针对file的操作shutdown() 是针对socket的操作unix系统里socket是一个文件,但文件不一定是一个socket;所以在进入系统调用后和达到协议层前(发...
2018-06-12 09:21:00 2253
原创 linux console的概念
console是一个缓冲的概念,其实是为内核提供打印的。我们的pc,终端常用的是显示器和键盘构成,我们用户打印和内核打印都从这个终端反映给用户。所以,这里,/dev/console是连接到/dev/tty0的,其实这里有2个概念,console和tty这2个咚咚,怎么实现,其实console这个结构中有个device,这里其实就是tty0对应的一个虚拟终端设备。 如果,我们来个专门打印...
2018-06-11 09:22:53 6074
原创 字节对齐算法
//宏定义,字节对齐算法//@x-表示字节数//@a-表示多少个字节对齐#define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1))范例:int size = ALIGN(101, 4);size=104int size = ALIGN(100, 4);size=100...
2018-06-11 09:21:08 1228 1
原创 用宏定义实现不同类型的数据比较
宏定义,实现不同类型的数据比较#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))#define min_t(type, x, y) ({ \ type __min1 = (x); \ type __min2 = (y); \ __min1 < __min2 ? __min1 : __min2; })#define m...
2018-06-06 22:55:33 1566
原创 linux getsockname和getpeername使用
getsockname和getpeername函数getsockname函数用于获取与某个套接字关联的本地协议地址 getpeername函数用于获取与某个套接字关联的外地协议地址定义如下:[cpp] view plain copy#include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localad...
2018-06-04 23:31:11 5092 1
原创 linux socketpair
1. 用途 套接字可以用于网络通信,也可以用于本机内的进程通信。由于本机内进程的IP地址都相同,因此只需要进程号来确定通信的双方。非网络通信套接字在Linux环境中的应用很多,最典型的就是Linux的桌面系统——Xserver,其就是使用非网络套接字的方法进行进程之间的通信的。2. 用例源码:#include <sys/types.h> #include <sy...
2018-06-04 22:59:25 369
http_client.txt
2019-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人