![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tcp
专注云吸猫开发
c++开发,编程爱好者
展开
-
tcp的三次挥手和四次握手
TCP的三次挥手和四次握手 TCP之所以要用三次握手,主要为了完成如下几个目标 1)防止旧的SYN生效,比如 原来发出的SYN ,由于网络环境比较差,一直没有发送到服务端,客户端又发出了新的SYN, 这时候,如果旧的SYN ACK已经返回,那么,client就要回复一个RST给到服务器端,因为新SYN已经发出了,如果没有 三次握手,那么就可能造成多次连接的存在 2)同步双方的序列号 四次挥手: 四次挥手的过程: 首先 主动断开的一方,发送FIN 报文,进入FIN_...原创 2021-03-11 17:13:29 · 157 阅读 · 0 评论 -
sockaddr和sockaddr_in的区别
sockaddr的定义如下 struct sockaddr{ sa_family_t sin_family; //地址族 char sa_data[14]; //14字节,包含套接字中目标地址和端口信息 } sockaddr_in struct sockaddr_in { sa_family_t sin_family; //地址族 uint16_t sin_port; //16位 TCP/UDP 端口号 struct in_addr sin_addr; //32位I原创 2020-07-25 17:51:56 · 101 阅读 · 0 评论 -
FD_CLOEXEC
为什么socket要设置 FD_CLOEXEC ,原因就是主线程在fork子线程的时候,会把文件描述符也拷贝一份,当子线程在执行exec的时候,执行新的程序,而文件描述符并没有被关闭,由于在内核里面保存有文件描述符数量的引用计数,那么,如果不在exec被调用之前关闭文件描述符,那个该文件描述符就会出现没有被关闭的情况。 ...原创 2020-07-12 15:22:41 · 461 阅读 · 0 评论 -
为什么要忽略SIGPIPE信号
在socket编程中,要忽略SIGPIPE信号,这是因为,如果socket的对方已经关闭连接而我方依然在写入的情况下,会导致进程退出,因此要忽略该信号原创 2020-07-12 11:48:50 · 466 阅读 · 0 评论