Linux网络编程之TCP相关

本文详细介绍了Linux环境下TCP连接的建立过程,包括服务器端和客户端的步骤。讨论了TCP断开连接的四次挥手,以及在断开连接时的注意事项。此外,文章还探讨了TCP连接的一些关键细节,如文件描述符的阻塞非阻塞问题、三次握手的时机、listen函数的backlog参数、异常关闭时的RST包等。最后,作者分享了在高并发场景下客户端收到大量RST的解决方案和网络编程中常见的问题。
摘要由CSDN通过智能技术生成


最近在学习一些Linux网络编程,这里整理一下TCP相关内容

TCP连接建立

建立连接需要三次握手,对应的socket编程如下(忽略了异常处理):

服务器端

#include <sys/socket.h>
#include <arpa/inet.h>

// 1.创建套接字
int serverSockfd = socket(AF_INET, 
						  SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 
						  IPPROTO_TCP);

// 2.绑定端口
const char* ip = "127.0.0.1";
struct sockaddr_in addr;
addr.sin_family = AF_INET;      // ipv4
inet_pton(AF_INET, ip, &addr.sin_addr)    // 将字符串ip转为网络序ip
// 字节序转为网络序,一般x86-64机器是小端存储,网络序是大端存储的
addr.sin_port = htons(1234);    
bind(sockfd, (struct 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值