linux网络编程笔记2----------tcp

TCP通信
特点:
面向连接,可靠传输
TCP可靠在哪里?
TCP有三次握手和四次挥手的机制保证连接和断开的安全性
三次握手和四次挥手:
专业术语:
SYN 同步位,表示请求连接,一般为1
seq 序号,一般是随机数
ACK 确认位,ACK=1表示有效,无值表示无效
ack 确认号,在对方序号基础上+1
FIN 取消位,表示请求断开,一般为1
通信流程:
先建立连接,连接成功后就可以正常通信,如果有任何一方断开,通信都会结束
客户端:
创建TCP套接字
准备好对方的IP地址和端口号
发送连接请求给对方,等待对方建立连接
连接成功,开始发送数据给对方了
通信结束关闭套接字
服务器:
创建TCP套接字
绑定IP地址和端口号
将套接字设置为监听状态
等待对方发送连接请求
连接成功,开始接收对方发送的数据
通信结束关闭套接字
相关函数接口:
1、创建TCP套接字:
tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
2、绑定IP地址和端口号:
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
3、设置监听套接字
int listen(int sockfd, int backlog);
参数:
int sockfd:套接字
int backlog:最大同时连接请求个数
4、等待对方发送连接请求
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数:
int sockfd:套接字
struct sockaddr *addr:存放连接对象的IP地址和端口号
socklen_t *addrlen:结构体大小,地址传递
返回值:
成功:已连接套接字
失败:-1
思考:连接成功后返回的套接字是谁的?
客户端的套接字,服务器的套接字依旧是监听套接字,可以继续监听连接请求
如果还有连接请求,就可以再继续返回新的套接字
5、发送连接请求
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
参数:
int sockfd:套接字
const struct sockaddr *addr:发送对象的IP地址和端口号
socklen_t addrlen:结构体大小
6、发送数据
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
参数:
int sockfd:套接字
const void *buf:要发送的数据
size_t len:发送的字节数
int flags:发送标志,默认填0
返回值:
成功:发送的字节数
失败:-1
7、接收数据
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
参数:
int sockfd:套接字
void *buf:保存接收到的数据
size_t len:要接收的字节数
int flags:接收标志,默认填0
返回值:
成功:接收的字节数
失败:-1
8、关闭套接字
close(fd);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值