本文记录下本人在写服务器过程中遇到的一些相关函数,其具体详解参考给定的参考网址,本文只是做个记录,便于以后再次查询相关函数:
1.(setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1)
允许重用地址!!!消除bind时"Address already in use"错误
http://www.cnblogs.com/eeexu123/p/5275783.html
2、struct sockaddr_in
处理网络通讯的地址
https://blog.csdn.net/will130/article/details/53326740
3、bzero(void *s, int n)
将字符串的前n个字节清零。bzero函数TC和VC中都被memset代替,gcc中还保留了bzero
http://www.cnblogs.com/loanhicks/p/7341692.html
4、htonl()
把本机字节序转换成网络字节序(大端模式)
https://blog.csdn.net/yaxiya/article/details/6722083
5、htons()
htonl()--"Host to Network Long"
ntohl()--"Network to Host Long"
htons()--"Host to Network Short"
ntohs()--"Network to Host Short"
https://blog.csdn.net/u010355144/article/details/44964181
6、signal(SIGCHLD, SIG_IGN); //SIG_IGN---表示忽略
并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。
如果将此信号的处理方式设为忽略,可让内核把僵尸子进程转交给init进程去处理,
省去了大量僵尸进程占用系统资源。(Linux Only)
https://blog.csdn.net/xinguan1267/article/details/17357093
7、 signal(SIGPIPE,SIG_IGN);
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,
client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,
告诉进程这个连接已经断开了,不要再写了。
http://www.cppblog.com/elva/archive/2008/09/10/61544.html
8、pthread_mutex_init()
互斥锁的初始化
https://blog.csdn.net/yasi_xi/article/details/19112077
9、pthread_create()
创建线程
https://blog.csdn.net/youbang321/article/details/7815707
10、pthread_cond_wait()
pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用pthread_cond_signal()
或pthread_cond_broadcast来唤醒它。(传入条件变量和互斥锁)
https://blog.csdn.net/hudashi/article/details/7709421
http://www.cnblogs.com/hnrainll/archive/2011/12/14/2287378.html
11、(fcntl(fd, F_SETFL, flag) == -1)
查看fd文件的状态标志,并确定其是否为非阻塞
https://www.cnblogs.com/xuyh/p/3273082.html
12、epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &event)
结构体epoll_event被用于注册所感兴趣的事件和回传所发生待处理的事件
https://blog.csdn.net/sjin_1314/article/details/8240511
13、listen()中函数地址为0的情况
https://blog.csdn.net/ye_i_qi/article/details/52808447
14、 struct timeval //求当前时间
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
https://blog.csdn.net/lyc_daniel/article/details/11733715
15、readn()、writen()函数
读写write管道、FIFO、终端和socket时,很可能
https://blog.csdn.net/robbie2046/article/details/7090062
16、http协议中get与post
get是从服务器上获取数据,post是向服务器传送数据
https://blog.csdn.net/fuyuwei2015/article/details/46446439
17、imencode()和imdecode() 用于网络传输图片
OpenCV中的cv::imdecode函数是从指定的内存缓存中读一幅图像,而cv::imencode是将一幅图像写进内存缓存中
https://blog.csdn.net/fengbingchun/article/details/60780232
18、opencv中的Mat类
Mat类是OpenCV里使用广泛的一个类,其中我认为最重要的一个作用就是作为存储图像的数据结构
在存储的图像不管是彩色的还是灰度图像,都是二维的矩阵
https://blog.csdn.net/lhanchao/article/details/52356343
19、int stat(const char *file_name, struct stat *buf)
函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043361.html
20、mmap(NULL, sbuf.st_size, PROT_READ, MAP_PRIVATE, src_fd, 0)
函数说明:mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存
http://www.cnblogs.com/xmphoenix/archive/2011/08/20/2146938.html
21、mmap()和shmat()建立共享内存的区别
https://blog.csdn.net/hj605635529/article/details/73163513
22、pthread_cond_signal(pthread_cond_t *cond)
用来在条件满足时,给正在等待的对象发送信息,表示唤醒该条件变量,
一般和pthread_cond_wait函数联合使用
https://blog.csdn.net/choice_jj/article/details/7492458
https://blog.csdn.net/hudashi/article/details/7709421