C语言基础-网络相关函数
时间:2020-05-09
本文章向大家介绍C语言基础-网络相关函数,主要包括C语言基础-网络相关函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、相关函数
函数 | 描述 |
---|---|
int socket(int family, int type, int protocol); | 位于:<sys/socket.h>; 功能:创建一个网络套接字 ; 返回:成功返回一个非负数的描述符,出错返回-1。 |
int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); | 位于:<sys/socket.h>; 功能:把一个本地协议地址赋予一个套接字; 返回:成功返回0,出错返回-1。 |
int listen(int sockfd, int backlog); | 位于:<sys/socket.h>; 功能:; 返回:成功返回0,出错返回-1。 |
int accept(int sockfd, struct sockaddr *cliaddr, socklne_t *addrlen); | 位于:<sys/socket.h>; 功能:有服务器调用,用于从已完成连接队列头返回下一个已完成连接; 返回:成功返回0,出错返回-1。 |
int connect(int sockfd,const struct sockaddr *servaddr, socklen_t addrlen); | 位于:<sys/socket.h>; 功能:建立与服务器的连接; 返回:成功返回0,出错返回-1。 |
int clost(int sockfd); | 位于:<sys/socket.h>; 功能:关闭套接字,终止连接; 返回:成功返回0,出错返回-1。 |
int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *adddrlen); | 位于:<sys/socket.h>; 功能:返回与某个套接字关联的本地协议地址; 返回:成功返回0,出错返回-1。 |
int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *adddrlen); | 位于:<sys/socket.h>; 功能:返回某个套接字关联的外地协议地址; 返回:成功返回0,出错返回-1。 |
int shutdown(int sockfd, int howto); | 位于:<sys/socket.h>; 功能:关闭套接字; 参数:sockfd为套接字标识;howto可能为: SHUT_RD关闭连接的输入流,SHUT_WR关闭连接的输出流,SHUT_RDWR输入输出都关闭; 返回:成功返回0,出错返回-1。 |
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); | 位于:<sys/socket.h>; 功能:获取影响套接字的选项; 返回:成功返回0,出错返回-1。 |
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); | 位于:<sys/socket.h>; 功能:设置影响套接字的选项; 返回:成功返回0,出错返回-1。 |
int fcntl(int fd, int cmd, …); | 位于:<fcntl.h>; 功能:执行各种描述符控制操作; 返回:成功返回0,出错返回-1。 |
二、UDP相关函数
函数 | 描述 |
---|---|
ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen); | 位于:<sys/socket.h>; 功能:接受套接字发送来的数据; 返回:成功返回读取到的字节数,失败则为-1。 |
ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags, const struct sockaddr *to, socklen_t addrlen); | 位于:<sys/socket.h>; 功能:发送数据到指定的服务器; 返回:成功返回发送的字节数,失败则为-1。 |
三、SCTP相关函数
函数 | 描述 |
---|---|
int sctp_bindx(int sockfd, const struct sockaddr *addrs, int addrcnt, int flags); | 位于:<netinet/sctp.h>; 功能:允许SCTP套接字绑定一个特定地址子集; 返回:成功返回0,出错返回-1。 |
int sctp_connectx(int sockfd, const struct sockaddr *addrs, int addrcnt); | 位于:<netinet/sctp.h>; 功能:连接到一个多宿对端机; 返回:成功返回0,出错返回-1。 |
int sctp_getpaddrs(int sockfd, sctp_assoc_t id, struct sockaddr **addrs); | 位于:<netinet/sctp.h>; 功能:获取对端所有地址; 返回:成功返回0,出错返回错-1。 |
int sctp_freepaddrs(struct sockaddr *addrs); | 位于:<netinet/sctp.h>; 功能:释放由sctp_getpaddrs函数分配的资源。 |
int sctp_getladdrs(int sockfd, sctp_assoc_t id, struct sockaddr **addrs); | 位于:<netinet/sctp.h>; 功能:获取属于某个关联的本地地址; 返回:成功返回存放在addrs中的本端地址数,出错返回错-1。 |
void sctp_freeladdrs( struct sockaddr *addrs); | 位于:<netinet/sctp.h>; 功能:释放由sctp_getladdrs函数分配的地址。 |
void sctp_sendmsg(int sockfd, const void *msg, size_t msgsz, const struc sockaddr *to, socklen_t tolen, uint32_t ppid, uint flags, uint16_t stream, uint32_t timetolive, uint32_t context); | 位于:<netinet/sctp.h>; 功能:简化发送方式; 返回:成功返回所有写字节数,出错返回-1。 |
ssize_t sctp_recvmsg(int sockfd, const void *msg, size_t msgsz, const struc sockaddr *from, socklen_t *fromlen, struct sctp_sndrcvinfo *sinfo, int *msg_flags); | 位于:<netinet/sctp.h>; 功能:简化获取数据过程; 返回:成功返回所有读字节数,出错返回-1。 |
int sctp_opt_info(int sockfd, sctp_assoc_t assoc_id, int opt, void *arg, socklen_t *siz); | 位于:<netinet/sctp.h>; 功能:把参数重新包装到合适的getsockopt调用中的库函数; 返回:成功返回0,出错返回-1。 |
int sctp_peeloff(int sockfd, sctp_assoc_t id); | 位于:<netinet/sctp.h>; 功能:从一个一到多式套接字中抽取一个关联,构成单独一个一到一式套接字; 返回:成功返回一个新的套接字描述符,出错返回错-1。 |
四、IP与地址相关函数
函数 | 描述 |
---|---|
struct hostent *gethostbyname(const char *hostname); | 位于:<netdb.h>; 功能:通过名称获取host; 返回:成功返回一个非空指针,出错返回-1。 |
struct hostent *gethostbyaddr(const char *addr, socklen_t len, int family); | 位于:<netdb.h>; 功能:通过IP地址获取主机名; 返回:成功返回非空指针,出错返回-1。 |
struct servent *getservbyname(const char *servname, const char *protoname); | 位于:<netdb.h>; 功能:通过给定名字与协议查找服务; 返回:成功返回非空指针,出错返回-1。 |
struct servent *getservbyport(int port, const char *protoname); | 位于:<netdb.h>; 功能:根据给定端口号与协议查询服务; 返回:成功返回非空指针,出错返回错1。 |
struct servent *getaddrinfo(const char *hostname, const *service, const struct addrinfo *hints, struct addrinfo **result); | 位于:<netdb.h>; 功能:处理名字到地址以及服务到端口这两种转换,返回一个sockaddr结构; 返回:成功返回0,出错返回-1。 |
const char *gai_strerror(int error); | 位于:<netdb.h>; 功能:返回一个指向对应的出错信息串的指针。 |
void freeaddrinfo(struct addrinfo *ai); | 位于:<netdb.h>; 功能:清除getaddrinfo函数生成的内存空间。 |
int getnameinfo(struct sockaddr *sockaddr, socklen_t addrlen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags); | 位于:<netdb.h>; 功能:返回描述其中的主机的一个字符串和描述其中的服务的另一个字符串; 返回:成功返回0,出错返回NULL。 |
struct hostent *gethostbyname_r(const char *hostname, struct hostent *result, char *buf, int buflen, int *h_errnop); | 位于:<netdb.h>; 功能:; 返回:成功返回非空指针,出错返回NULL。 |
struct hostent *gethostbyaddr_r(const char *addr, struct int len, int type, struct hostent *result, char *buf, int buflen, int *h_errnop); | 位于:<netdb.h>; 功能:; 返回:成功返回非空指针,出错返回NULL且设置error_num。 |
struct hostent *gethostbyname2(const chat *name, int af); | 位于:<netdb.h>; 功能:; 返回:成功返回非空指针,出错返回错-1。 |
struct hostent *getipnodebyname(const chat *name, int af, int flags, int *error_num); | 位于:<netdb.h>; 功能:; 返回:成功返回非空指针,出错返回NULL且设置error_num。 |
结构体
2.1 in_addr
/* Internet address. */ typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; /* 32为 IPV4 地址*/ };
2.1 sockaddr_in
/* Structure describing an Internet socket address. */ struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; };
原文地址:https://www.cnblogs.com/binHome/p/12859237.html
- Python机器学习中的特征选择
- Android学习第八弹之改变状态栏的颜色使其与APP风格一体化
- 手把手教你 MongoDB 的安装与详细使用(二)
- 搭建 MongoDB分片(sharding) / 分区 / 集群环境
- Android调用手机中的应用市场,去评分的功能实现
- ANR 原理与实战技巧
- Android将应用程序的崩溃信息如何保存到本地文件,并上传至服务器
- android native内存检测方案(二)
- 测试数据集与验证数据集之间有什么区别呢?
- 深度学习的未来
- SDL系列讲解(二) 环境搭建
- SDL系列讲解(四) demo讲解
- 具有张量流的混合密度网络
- SDL系列讲解(七) SDL_image教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- WSL 下搭建前端开发环境
- 编译安装 SeasLog 扩展
- Python3笔试实际操作基础1.md
- Python3入门学习四.md
- 通用封装函数——四则运算
- 打造自己最喜爱的 Windows10 —— 系统与软件配置优化篇
- 编译安装 IgBinary 扩展
- Python3入门学习二.md
- 编译安装 Yaml 扩展
- 一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到
- 打造自己最喜爱的 Windows10 —— 纯命令安装系统篇
- Ubuntu18.04 切换 Python 版本
- Python3入门学习三.md
- Yur 主题 MarkDown 展示
- Python3入门学习一.md