常用socket api

部分Socket API简要说明,以备后续查看

创建套接字 ( socket )

int socket(int domain, int type ,int protocol);
参数描述
domain协议族类型
type协议类型
protocol实际使用的传输层协议
返回
0成功,返回一个代表套接字描述符的整数
1失败

该函数用于根据指定的地址族、数据类型和协议来分配一个套接字描述符及其所使用的的资源。

domain / 协议族类型

  • AF_INET: IPV4
  • AF_INET6: IPV6

type / 协议类型

  • SOCK_STREAM: 流式套接字
  • SOCK_DGRAM: 数据报套接字
  • SOCK_RAW: 原始套接字

绑定套接字 ( bind )

int bind(int sockfd, const struct sockaddr *name, socklen_t namelen);
参数描述
sockfd套接字描述符
name指向sockaddr结构体的指针,代表要绑定的地址
namelensockaddr结构体的长度
返回
0成功
1失败

该函数用于将端口号和IP地址绑定在指定套接字上。

监听套接字 ( listen )

int listen(int sockfd, int backlog);
参数描述
sockfd套接字描述符
backlog表示一次能等待的最大连接数目
返回
0成功
1失败

该函数用于TCP服务器监听指定套接字连接

接收连接 ( accept )

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数描述
sockfd套接字描述符
addr用来接受一个返回值,这返回值指定客户端的地址。如果对客户的地址不感兴趣,那么可以把这个值设置为NULL。
addrlen用来接受上述addr的结构的大小的,它指明addr结构所占有的字节个数。它也可以被设置为NULL。
返回
0成功
1失败

accept默认会阻塞进程,直到有一个客户连接建立后返回,它返回的是一个新可用的套接字,这个套接字是连接套接字。此时我们需要区分两种套接字,一种套接字正如accept的参数sockfd,它是监听套接字,在调用listen函数之后,一个套接字会从主动连接的套接字变身为一个监听套接字;而accept返回是一个连接套接字,它代表着一个网络已经存在的点点连接。自然要问的是:为什么要有两种套接字?原因很简单,如果使用一个描述字的话,那么它的功能太多,使得使用很不直观,同时在内核确实产生了一个这样的新的描述字。

建立连接 ( connect )

int connect(int sockfd, const struct sockaddr *name, socklen_t namelen);
参数描述
sockfd套接字描述符
name服务器地址信息
namelen服务器地址结构体长度
返回
0成功
1失败

该函数用于建立与指定socket的连接

发送TCP数据 ( send )

int send(int sockfd, const void *dataptr, size_t size , int flags);
参数描述
sockfd套接字描述符
dataptr发送的数据指针
size发送的数据长度
flags标志-
返回
> 0成功,返回发送数据长度
<= 0失败

该函数常用于TCP连接发送数据

接收TCP数据 ( recv )

int recv(int sockfd, void *mem, size_t len , int flags);
参数描述
sockfd套接字描述符
dataptr接收数据指针
len接收的数据长度
flags标志-
返回
> 0成功,返回接收的数据的长度
= 0目标地址已传输完成并关闭连接
< 0失败

该函数常用于TCP连接接收数据

发送UDP数据 ( sendto )

int sendto(int sockfd, const void *dataptr, size_t size , int flags, const struct sockaddr *to, socklen_t tolen);
参数描述
sockfd套接字描述符
dataptr发送数据指针
size发送的数据长度
flags标志-
to目标地址结构体指针
tolen目标地址结构体长度
返回
> 0成功,返回发送数据长度
<= 0失败

该函数常用于UDP连接发送数据

接收UDP数据 ( recvfrom )

int recvfrom(int sockfd, void *mem, size_t len , int flags, const struct sockaddr *from, socklen_t fromlen);
参数描述
sockfd套接字描述符
mem接收数据指针
len接收的数据长度
flags标志-
from接收地址结构体指针
fromlen接收地址结构体长度
返回
> 0成功,返回接收的数据的长度
= 0目标地址已传输完成并关闭连接
< 0失败

该函数常用于UDP连接接收数据

关闭套接字 ( close )

int close(int sockfd);
参数描述
sockfd套接字描述符
返回
0成功
-1失败

该函数常用于UDP连接接收数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值