RT-Thread API参考手册  3.1.1
嵌入式实时操作系统
套接字使用

套接字接口 更多...

结构体

struct  fd_set
 文件句柄管理 更多...
 

类型定义

typedef struct fd_set fd_set
 文件句柄管理
 

函数

int socket (int domain, int type, int protocol)
 创建套接字 更多...
 
int bind (int s, const struct sockaddr *name, socklen_t namelen)
 绑定套接字 更多...
 
int listen (int s, int backlog)
 监听套接字 更多...
 
int accept (int s, struct sockaddr *addr, socklen_t *addrlen)
 接收连接 更多...
 
int connect (int s, const struct sockaddr *name, socklen_t namelen)
 建立连接 更多...
 
int send (int s, const void *dataptr, size_t size, int flags)
 TCP 数据发送 更多...
 
int recv (int s, void *mem, size_t len, int flags)
 TCP 数据接收 更多...
 
int sendto (int s, const void *dataptr, size_t size, int flags, const struct sockaddr *to, socklen_t tolen)
 UDP 数据发送 更多...
 
int recvfrom (int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen)
 UDP 数据接收 更多...
 
int closesocket (int s)
 关闭套接字 更多...
 
int shutdown (int s, int how)
 按设置关闭套接字 更多...
 
int setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen)
 设置套接字选项 更多...
 
int getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen)
 获取套接字选项 更多...
 
int getpeername (int s, struct sockaddr *name, socklen_t *namelen)
 获取远端地址信息 更多...
 
int getsockname (int s, struct sockaddr *name, socklen_t *namelen)
 获取本地地址信息 更多...
 
int ioctlsocket (int s, long cmd, void *arg)
 配置套接字参数 更多...
 

详细描述

套接字接口

函数说明

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

创建套接字

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

参数
domain协议族
type协议类型
protocol实际使用的运输层协议
返回
成功,返回一个代表套接字描述符的整数;失败返回 -1。
示例:
tcpclient_sample.c, tcpclient_select_sample.c, tcpserver_sample.c, udpclient_sample.c , 以及 udpserver_sample.c.
int bind ( int  s,
const struct sockaddr name,
socklen_t  namelen 
)

绑定套接字

用于将端口号和 IP 地址绑定带指定套接字上。当使用 socket() 创造一个套接字时, 只是给定了协议族,并没有分配地址,在套接字接收来自其他主机的连接前,必须用 bind() 给它绑定一个地址和端口号。

参数
s套接字描述符
name指向sockaddr结构体的指针,代表要绑定的地址
namelensockaddr结构体的长度
返回
0 成功;-1 失败。
示例:
tcpserver_sample.c , 以及 udpserver_sample.c.
int listen ( int  s,
int  backlog 
)

监听套接字

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

参数
s套接字描述符
backlog表示一次能够等待的最大连接数目
返回
0 成功;-1 失败。
示例:
tcpserver_sample.c.
int accept ( int  s,
struct sockaddr addr,
socklen_t *  addrlen 
)

接收连接

当应用程序监听来自其他主机的连接时,使用该函数初始化连接,accept()为每个 连接创立新的套接字并从监听队列中移除这个连接。

参数
s套接字描述符
addr客户端设备地址信息
addrlen客户端设备地址结构体的长度
返回
成功,返回新创建的套接字描述符;失败返回 -1。
示例:
tcpserver_sample.c.
int connect ( int  s,
const struct sockaddr name,
socklen_t  namelen 
)

建立连接

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

参数
s套接字描述符
name服务器地址信息
namelen服务器地址结构体的长度
返回
0 成功;-1 失败。
示例:
tcpclient_sample.c , 以及 tcpclient_select_sample.c.
int send ( int  s,
const void *  dataptr,
size_t  size,
int  flags 
)

TCP 数据发送

参数
s套接字描述符
dataptr要发送的数据指针
size发送的数据长度
flags标志,一般为0
返回
大于0 成功,返回发送的数据的长度;小于等于0 失败。
示例:
tcpclient_sample.c, tcpclient_select_sample.c , 以及 tcpserver_sample.c.
int recv ( int  s,
void *  mem,
size_t  len,
int  flags 
)

TCP 数据接收

参数
s套接字描述符
mem接收的数据指针
len接收的数据长度
flags标志,一般为0
返回
大于0 成功,返回接收的数据的长度;等于0 表示目标地址已传输完并关闭连接;小于0 失败。
示例:
tcpclient_sample.c, tcpclient_select_sample.c , 以及 tcpserver_sample.c.
int sendto ( int  s,
const void *  dataptr,
size_t  size,
int  flags,
const struct sockaddr to,
socklen_t  tolen 
)

UDP 数据发送

参数
s套接字描述符
dataptr发送的数据指针
size发送的数据长度
flags标志,一般为0
to目标地址结构体指针
tolen目标地址结构体长度
返回
大于0 成功,返回发送的数据的长度;小于等于0 失败。
示例:
udpclient_sample.c.
int recvfrom ( int  s,
void *  mem,
size_t  len,
int  flags,
struct sockaddr from,
socklen_t *  fromlen 
)

UDP 数据接收

参数
s套接字描述符
mem接收的数据指针
len接收的数据长度
flags标志,一般为0
from接收地址结构体指针
fromlen接收地址结构体长度
返回
大于0 成功,返回接收的数据的长度;等于0 接收地址已传输完并关闭连接;小于0 失败。
示例:
udpserver_sample.c.
int closesocket ( int  s)

关闭套接字

参数
s套接字描述符
返回
0 成功;-1 失败。
示例:
tcpclient_sample.c, tcpclient_select_sample.c, tcpserver_sample.c, udpclient_sample.c , 以及 udpserver_sample.c.
int shutdown ( int  s,
int  how 
)

按设置关闭套接字

参数
s套接字描述符
how套接字控制的方式
返回
0 成功;-1 失败。
int setsockopt ( int  s,
int  level,
int  optname,
const void *  optval,
socklen_t  optlen 
)

设置套接字选项

参数
s套接字描述符
level协议栈配置选项
optname需要设置的选项名
optval获取选项值的缓冲区地址
optlen获取选项值的缓冲区长度地址
返回
0 成功;小于0 失败。
int getsockopt ( int  s,
int  level,
int  optname,
void *  optval,
socklen_t *  optlen 
)

获取套接字选项

参数
s套接字描述符
level协议栈配置选项
optname需要设置的选项名
optval获取选项值的缓冲区地址
optlen获取选项值的缓冲区长度地址
返回
0 成功;小于0 失败。
int getpeername ( int  s,
struct sockaddr name,
socklen_t *  namelen 
)

获取远端地址信息

参数
s套接字描述符
name接收信息的地址结构体指针
namelen接收信息的地址结构体长度
返回
0 成功;小于0 失败。
int getsockname ( int  s,
struct sockaddr name,
socklen_t *  namelen 
)

获取本地地址信息

参数
s套接字描述符
name接收信息的地址结构体指针
namelen接收信息的地址结构体长度
返回
0 成功;小于0 失败。
int ioctlsocket ( int  s,
long  cmd,
void *  arg 
)

配置套接字参数

参数
s套接字描述符
cmd套接字操作命令
arg操作命令所带参数
返回
0 成功;小于0 失败。