1、recv、read recv和read的区别?? recv只能用于套接口io,不能用于文件io或者其他io read可以用于各种io recv相较而言多了flag参数,MSG_OOB(接收紧急数据指针)MSG_PEEK(接收缓冲区数据,但是并不急着清除) 2、封装按行读取readline 3、g ...
分类:
其他好文 时间:
2020-04-19 12:52:53
阅读次数:
77
FIONREAD,就是返回缓冲区有多少字节。输入有个输入缓冲区,用int nread;ioctl(0,FIONREAD,&nread);能得到缓冲区里面有多少字节要被读取。值放在 nread里面了。然后就可以 read 了。nread = read(0,buffer,nread); MSG_PEEK ...
分类:
系统相关 时间:
2017-09-26 23:37:49
阅读次数:
189
漏洞描述Linuxkernel是美国Linux基金会发布的操作体系Linux所使用的内核。Linuxkernel4.5之前的版别中的udp.c文件存在安全缝隙,Linux内核中的udp.c答应长途攻击者经过UDP流量履行恣意代码,这些流量会在履行具有MSG_PEEK象征的recv体系调用时触发不安全的第2次校验和核算,长..
分类:
系统相关 时间:
2017-05-15 22:47:02
阅读次数:
280
这一节主要关注的还是粘包问题,我们利用recv实现一个recv_peek函数,它的目的是偷窥目的,它是利用recv的一个msg_peek参数与read的区别,read读取后会擦除缓冲区的内容,而recv结合msg_peek会读取的时候并不擦除缓冲区的内容,起到一个可以偷窥的目的,利用这个特性可以用r...
分类:
其他好文 时间:
2015-04-28 01:50:25
阅读次数:
114
tinyhttpd 是一个用C语言实现的简单的HTTP服务器程序,500行代码,值得阅读。看完这个代码之后有几点需要进一步的思考:
1.get_line()函数要处理跨平台的换行('\n' or '\r\n')
MSG_PEEK 标志可以窥探缓冲区中的数据,从而决定是否读取;
2.stat ,st.st_mode & S_IFMT) == S_IFDIR 判断对应的路径是否是目录;
3....
分类:
Web程序 时间:
2015-04-03 21:06:00
阅读次数:
225
###Linux IPC###
---------------
##消息传递##
- 信号: 非亲缘,传递信息少,只能是控制信息而不是数据信息
- 管道: 要亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK
- FIFO: 非亲缘,无边界字节流,先进先出,消耗掉就没了,没有窥探功能MSG_PEEK
- Socket: 非亲缘,边界可有可...
分类:
系统相关 时间:
2014-09-11 21:01:22
阅读次数:
292
MSG_PEEK标志可以用来读取套接字接收队列中可读的数据,一些情况会用到它,比如为了避免不阻塞而先检查套接字接收队列中可读的数据长度,再采取相应操作。
当然,不阻塞也可采取其他的方法,例如非阻塞式I/O。
MSG_PEEK标志会将套接字接收队列中的可读的数据拷贝到缓冲区,但不会使套接子接收队列中的数据减少,常见的是:例如调用recv或read后,导致套接字接收队列中的数据被读取后而减少,...
分类:
其他好文 时间:
2014-06-07 12:06:33
阅读次数:
441
recv函数会将套接字缓冲区中的内容读出,但不清空,与read函数的区别在此。此函数有一个flag标志位,设为MSG_PEEK。
send函数会将缓冲区中的内容写入到套接字,也不清空,与write函数的区别在此。
用这两个函数可以先接收或发送缓冲区中的内容,然后再用readn(此时缓冲区中的内容依然存在)与write函数去继续判断换行符/n,对缓冲区内容实现换行输出。
echocli.c...
分类:
其他好文 时间:
2014-05-13 23:43:35
阅读次数:
494