18.TCP使用的注意事项

程序向对方已经关闭的管道,写数据,会收到SIGPIPE信号。write 系统调用返回-1收到errono EPIPE, man 2 write。SIGPIPE信号默认行为终止进程。

用管道串起一段命令,如果管道末端程序对出,则管道依次收到SIGPIPE信号退出。

head找到前十行,产生SIGPIPE信号,避免解压缩整个大文件huge.log.gz文件

unix默认使用阻塞IO,自动限速,节流效果。如果接收端接受慢,发送端时不时阻塞在write上。cpu占用率下来

如果已经发了数据,会等到ACK回来,才能发送第二次数据。

目的是为了,防止数据包太小,造成网络负担太大。影响响应延迟

如果是write-write-read,第二个write会等待一个rtt?

解决方法:应用层缓冲区,将前两个write合并为一个write

问题:如果同一个连接,有多个请求,并发请求,很难将并发请求合并成一个大的buffer

server端:./nodelay_server  

client端:./nodelay localhost 1000(发送1000字节)

client端:./nodelay -b  localhost 1000

client端:./nodelay -D  localhost 1000

复用地址:tcp server crash可以马上重启

发布了434 篇原创文章 · 获赞 171 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/INGNIGHT/article/details/102800703
今日推荐