网络编程常用函数接口

来源:本站
导读:目前正在解读《网络编程常用函数接口》的相关信息,《网络编程常用函数接口》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《网络编程常用函数接口》的详细说明。
简介:通用结构体:

struct sockaddr {
sa_family_t sa_family; /* unsigned short , 指定了通信协议家族 */
char sa_data[14];
};

通用结构体:

struct sockaddr {

sa_family_t sa_family; /* unsigned short , 指定了通信协议家族 */

char sa_data[14];

};

IPV4网络通信地址结构体:

struct sockaddr_in {

pa_family_t sin_family;

port_t sin_port;

struct in_addr {

unsigned int s_addr;

}sin_addr;

};

UNIX本地通信地址结构体:

struct sockaddr_un {

sa_family_t sun_family;

char sun_path[108];

};

函数名:int socket (int domain, int type, int protocl)

功能:打开一个套接字,并返回一个相关的文件描述符。

返回值:成功,一个新的文件描述符;失败, -1;

参数表:

int domain, 通信域:

AF_INET | AF_INET6 | AF_UNIX | AF_PACKET

int type, 套接字类型:

SOCK_STREAM 流式套接字

SOCK_DGRAM 数据报套接字

SOCK_RAW 原始套接字

int protocl, 协议(在原始套接字中根据需要选择使用,流式或数据报套接字中为 0)

函数名: int bind(int sockfd, const struct sockaddr * addr, socklen_t addrlen);

功能:为一个打开的套接字,绑定一个地址(IP+PORT)。

返回值:成功, 0;失败, -1;

参数表:

int sockfd, 通过socket打开并返回的文件描述符。

const struct sockaddr * addr, 通用结构体地址,具体根据通信域选择相关的地址格式。

socklen_t addrlen, 实际地址结构体的大小。

函数名: int sendto(int sockfd, void *buff, size_t size, int flag, const struct sockaddr *addr, socklen_t addrlen);

功能:向一个指定的目标主机发送数据包。

返回值:成功,实际发送的字节数;失败, -1;

参数表:

int sockfd, 通过socket打开并返回的文件描述符。

void *bufff, 即将发送的数据。

size_t size,数据大小。

int flag, 发送标志位(阻塞、非阻塞等,如果无特殊要求则设置为0)。

const struct sockaddr * addr, 目标主机的地址结构体(IP+PORT)。

socklen_t addrlen, 目标主机地址结构体大小。

函数名: int recvfrom(int sockfd, void *buff, size_t size, int flag, struct sockaddr *addr, socklen_t *addrlen);

功能:接受一个数据包,并带回数据包的来源地址。

返回值:成功,实际接收的字节数;失败, -1;对方关闭, 0;

参数表:

int sockfd, 通过socket打开并返回的文件描述符。

void *bufff, 接受数据的缓冲区。

size_t size,缓冲区大小。

int flag, 接收标志位(阻塞、非阻塞等,如果无特殊要求则设置为0)。

struct sockaddr * addr, 用来保存数据源主机的地址的结构体(IP+PORT)。

socklen_t *addrlen, 期望接收的数据源主机的地址结构体大小(在使用前由用户自己初始化);一旦该函数调用结束,该变量会被修改为实际大小。

函数名: int listen(int sockfd, int backlog);

功能:将一个经过bind的套接字置为被动状态,以便将来使用accept接受新的请求。

返回值:成功, 0;失败, -1;

参数表:

int sockfd, 通过socket创建,并通过bind后的套接字描述符。

int backlog, 握手请求队列的最大值。

函数名: int accept(int sockfd, struct sockaddr * addr, socklen_t addrlen);

功能:接受一个握手请求,并返回一个新的文件描述符。

返回值:成功,新的文件描述符(用来收发数据的通道);失败, -1;

参数表:

int sockfd, 经过socket创建,bind后并且listen后的文件描述符。

struct sockaddr *addr, 用来带回握手请求方的地址结构体。

socklen_t addrlen, 期望接收的对方的地址大小,该值会被修改为实际大小,调用者需提前初始化。

函数名: int select(int nfds, fd_set *rdfds, fd_set *wrfds, fd_set *exceptfds, struct timeval * timval);

功能:在多路IO复用模型中,负责检测多个文件描述符资源。但没有资源可操作时,进程阻塞;有资源操作时返回可操作的资源个数。

返回值:成功,资源个数;失败, -1;超时, 0;

参数表:

int nfds, 检测的最大描述符值+1.

fd_set *rdfds, 希望监测的读资源描述符集合。

fd_set *wrfds, 希望监测的写资源描述符集合。

fd_set *wrfds, 希望监测的其他资源描述符集合。

struct timeval *timval, 超时监测,设定秒+微秒。

select相关函数:

FD_SET(int fd, fd_set * fds): 将描述加入集合中。

FD_CLR(int fd, fd_set *fds): 将指定描述从集合中移除。

FD_ZERO(fd_set *fds): 清空一个描述符集合。

FD_ISSET(Iint fd, fd_set *fds): 测试一个描述符是否在集合中(测试该描述符资源是否可操作);

其他函数接口:

int send(int sockfd, const void *buff, size_t size, int flag);

int recv(int sockfd, void *buff, size_t size, int flag);

getpeername(int connfd, struct sockaddr *addr, socklen_t *addrlen);

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

setsockopt(int level, int optname, const void *optval, socklen_t optlen);

short htons(short );

int htonl(int);

short ntohs(short);

int ntohl(int);

提醒:《网络编程常用函数接口》最后刷新时间 2024-03-14 01:05:45,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《网络编程常用函数接口》该内容的真实性请自行鉴别。