socket 相关函数

所有函数头文件:

#include <sys/types.h>
#include <sys/socket.h>

一、基本函数

(1)套接字创建函数:

int socket(int domain, int type, int protocol);

参数 :
domain :IP 版本: AF_INET;
type :socket 内部协议:SOCK_STREAM;
protocol :协议号,选 0 表示采用默认协议即流式协议;
返回值:
成功返回指向新创建的socket 的文件描述符,失败返回-1。
(2)绑定函数:bind:socket 绑定 IP 和端口号

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数:
sockfd:socket 文件描述符,socket 创建函数的返回值;
addr:传入参数,构造出 IP 地址加端口号的结构体地址,需要传入 struct sockaddr *,而我们使用 struct sockaddr_in 类型,需要强转;
addrlen:sizeof(addr)长度。
返回值:
成功返回 0,失败返回 -1。
(3)监听函数:listen:指定监听上限数,即同时允许多少个客户端与我建立连接

int listen(int sockfd, int backlog);

参数:
sockfd:socket 文件描述符,socket 创建函数的返回值;
backlog:排队建立 3 次握手队列和刚刚建立 3 次握手队列的连接数和,上限是 128;
返回值:成功返回 0,失败返回 -1。
(4)接收函数:accept:阻塞等待用户段发起连接,获得客户端的信息; 通过返回值,创建与客户通信的 socket 文件描述符。

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

参数:
sockdf:socket 文件描述符,socket 创建函数的返回值
addr: 传出参数,返回连接客户端地址信息,内含客户端的 IP 地址和端口号
addrlen:传入传出参数( 值 – 结果 )
传入结构体原始大小 sizeof(addr),传出真正接收到的结构体的大小
返回值:
成功返回一个新的 socket 文件描述符,指向客户端的 socket,用于和客户端通信;失败返回 -1。
注意:跟客户进行通信的套接字不是服务器通过 socket 函数创建的那个套接字。
(5)连接函数:connect :客户端连接服务器

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数:
sockdf:socket 文件描述符(客户端创建的套接字);
addr:传入参数,指定服务器端地址信息,含 IP 地址和端口号;
addrlen:传入参数,传入服务器 sizeof(addr)大小。
返回值:
成功返回 0,失败返回-1,设置 errno。

二、TCP 客户端和服务器建立流程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值