- 博客(24)
- 收藏
- 关注
原创 socket编程注意事项
1 进程间通信的方式常用的进程间通信的方式有:管道(pipe),命名管道(named pipe),信号,消息队列,共享内存,信号量等,这些通信基本是本机进程之间的,在网络中的主机之间是无法适用的。2 套接字socket套接字的出现主要解决网络间各主机间进程通信的问题,换而言之现在所以网络中的进程通信都采用socket方式。1.2.1 套接字的分类SOCK_STREAM流套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字
2022-04-07 14:17:44
2398
转载 WEB请求过程,http解析,浏览器缓存机制,DNS机制,CDN
转自:https://www.cnblogs.com/wade-luffy/p/5905786.html概述发起一个http请求的过程就是建立一个socket通信的过程。我们可以模仿浏览器发起http请求,譬如用httpclient工具包,curl命令等方式。curl "http://www.baidu.com" 返回页面数据curl -I "http://www.baid...
2018-11-26 15:21:11
1304
原创 简单的C语言事件接口,框架接口的实现
一个C语言的简单事件接口实现,这里用的是结构体数组,请直接看代码,代码有详细注释。 #include <stdio.h>#include <string.h>#define CMDSIZE 100typedef int (*ptrFun)(int num);typedef struct Command_t{ const cha...
2018-11-06 18:46:03
3008
2
转载 strcpy与memcpy以及strncpy
1. strcpy函数 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 函数原型及实现:[c-sharp] view plain copychar* strcpy(char* strDst, const char* strSrc) {
2016-03-11 16:05:05
434
转载 NAT的四种类型及类型检测
考 虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。用语定义
2016-03-09 16:05:15
651
原创 结构体字节对齐,pragma pack,__attribute__(packed)
程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏 蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字节,默认的字节对齐方式是4,当然我们也可以设置他的对齐 方式,如下:...
2016-03-08 14:46:32
15502
转载 随机函数 rand,srand,random,srandom 的区别与使用
函数定义: int rand(void); 返回 0 ------- RAND_MAX 之间的一个 int 类型整数,该函数为非线程安全函数。并且生成随机数的性能不是很好,已经不推荐使用。 void srand(unsigned int seed); 设置种子值,一
2016-03-07 17:36:06
1349
转载 linux下与实践相关的结构体 struct timeb,struct timeval ,struct timezone,struct timespec,struct tm 等
1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) struct t
2016-03-07 17:34:33
7009
转载 linux下gettimeofday()的使用
一.gettimeofday()函数的使用方法:1.简介:在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙2.函数原型:#includeint gettimeofday(struct timeval*tv,struct timezone *tz )3.说明:gettimeofday()会把目前的时间用
2016-03-07 17:30:08
1059
1
转载 NAT穿透,打洞,NAT类型
看完就懂了,详细易懂一、什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址。NAT的出现完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 二、NAT的分类STUN标准中,根据内部终端的地址(LocalIP:Loca
2016-03-07 14:33:32
4015
1
原创 C语言日志的实现,用宏实现日志
我们都知道在写代码的时候日志是必不可少的,那么该如何写日志呢,请往下看:以前我是这么写日志的:用fopen,open等创建好文件,然后将write,fwrite封装,这样就可以实现基本的日志。但是这样却又很多弊端,比如写入的日志的行号,所在文件名,函数名等无法写入,这样的日志用着不方面。最近学习了一种新的方法,他能弥补上面所说的不足。下面我们主要通过代码看一下:注:这里我们就不
2016-02-24 12:30:30
3299
原创 进程同步,条件变量,pthread_cond_wait,pthread_cond_init,PTHREAD_COND_INITIALIZER
条件量同互斥锁一样也是进程同步的一种机制
2016-02-22 14:50:55
5372
原创 浅谈进程非正常退出时资源回收相关的函数pthread_cleanup_push/pthread_cleanup_pop
进程非正常退出时资源的回收
2016-02-22 12:25:43
1027
转载 CURL函数简单介绍,CURL简单用法,初识CURL
libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。
2016-01-31 12:13:31
5193
原创 getopt_long 解析命令行参数(--help)
大家可能用到过getopt函数来解析命令行参数,如./a.out -a xx -b xx .....,这些被称为短参数,有时我们在编译一些开源库的时候会见到这样解析命令行参数,如--help ,--DIR /home/test,这些则为长参数,而长参数的解析可以用getopt_long函数,下面我们仔细来说说。头文件:#include函数原型:int getopt_long(int
2016-01-15 11:39:09
1090
转载 poll解析 ,poll和select区别
poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这
2016-01-14 16:26:58
762
转载 CentOS7/RHEL7 systemd详解
CentOS7/RHEL7 systemd详解 目录1. 为什么是systemd(1) 关于Linux服务管理(2) SysV init的优缺点(3) UpStart的改进(4) systemd的诞生(5)为什么systemd能做到启动很快2. SysV init介绍(1) 什么是SystemV(2)SysV init的运行级别(3)SysV
2015-10-22 17:20:12
1377
原创 linux下设置代理服务器
代理服务器,顾名思义就是局域上不能直接上网的机器将上网请求(比如说,浏览某个主页)发给能够直接上网的代理服务器,然后代理服务器代理完成这个上网请求,将它所要浏览的主页调入代理服务器的缓存;然后将这个页面传给请求者。这样局域网上的机器使用起来就像能够直接访问网络一样。 并且,代理服务器还可以进行一些网站的过滤和控制的功能,这样就实现了我们使用它的初衷——控制和节省上网费用。
2015-09-21 12:30:06
27694
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人