相关函数列表
//创建一个套接字 #include <sys/socket.h> int socket(int domain, int type, int protocol); //套接字是双向的,采用下面函数来禁止一个套接字的I/O #include <sys/socket.h> int shutdown(int sockfd, int how); //大端和小端,有4个用来在处理器字节序和网络字节序之间实施转换的函数 #include <arpa/inet.h> uint32_t htonl(uint32_t hostinet32); uint16_t htons(uint16_t hostint16); uint32_t ntohl(uint32_t netint32); uint16_t ntohs(uint16_t netint16); //地址格式的结构体 struct sockaddr { sa_family_t sa_faily; char sa_data[]; }; //IPv4因特网(AF_INET)中,套接字地址用结构体sockaddr_in表示 struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; }; //in_addr结构体 struct in_addr { in_addr_t s_addr; }; //下面函数用于将二进制地址格式和点分十进制字符表示之间转换 #include <arpa/inet.h> const char *inet_ntop(int domain, const void *restrict addr, char *restrict str, socklen_t size); int inet_pton(int domain, const char *restrict str, void *restrict addr); //通过下面函数可以找到给定计算机系统的主机信息 #include <netdb.h> struct hostent *gethostent(void); void sethostent(int stayopen); void endhostent(void); //hostent结构体 struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; //能够采用一套相似的接口来获得网络名字和网络编号 #include <netdb.h> struct netent *getnetbyaddr(uint32_t net, int type); struct netent *getnetbyname(const char *name); struct netent *getnetent(void); void setnetent(int stayopen); void endnetent(void); //netent结构体至少包含如下内容 struct netent { char *n_name; char **n_aliases; int n_addrtype; uint32_t n_net; }; //可以用下面函数在协议名字和协议编号之间进行映射 #include <netdb.h> struct protoent *getprotobyname(const char *name); struct protoent *getprotobynumber(int proto); struct protoent *getprotoent(void); void setprotoent(int stayopen); void endprotoent(void); //protoent结构体至少包含如下 struct protoent { char *p_name; char **p_aliases; int p_ptoro; }; //服务是由地址的端口号部分表示的,可以使用getservbyname将一个服务名映射到一个端口号,下面 //函数将一个端口号映射到一个服务名,并可以扫描查询 #include <netdb.h> struct servent *getservbyname(const char *name, const char *proto); struct servent *getservbyport(int port, const char *proto); struct servent *getservent(void); void serservent(int stayopen); void endservent(void); //servent结构体至少包含如下 struct servent { char *s_name; char **s_aliases; int s_port; char *s_proto; }; //下面函允许将一个主机名和一个服务名映射到一个地址 #include <sys/socket.h> #include <netdb.h> int getaddrinfo(const char *restrict host, const char *restrict service, const struct addrinfo *restrict buf, struct addrinfo **restrict res); void freeaddrinfo(struct addrinfo *ai); //addrinfo结构体至少包含以下成员 struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; //下面函数将错误码转成错误消息 #include <netdb.h> const char *gai_strerror(int error); //将一个地址转换成一个主机名和一个服务名 #include <sys/socket.h> #include <netdb.h> int getnameinfo(const struct sockaddr *restrict addr, socklen_t alen, char *restrict host, socklen_t hostlen, char *restrict service, socklen_t servlen, int flag); //下面函数用来关联地址和套接字 #include <sys/socket.h> int bind(int sockfd, const struct sockaddr *addr, socklen_t len); //下面函数用来发现绑定到套接字上的地址 #include <sys/socket.h> int getsockname(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict alenp); //如果套接字已经和对等方连接,下面函数用来找到对方的地址 #include <sys/socket.h> int getpeername(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict alenp); //使用下面函数来建立连接 #include <sys/socket.h> int connect(int sockfd, const struct sockaddr *addr, socklen_t len); //服务器调用下面函数来宣告它愿意接受连接请求 #include <sys/socket.h> int listen(int sockfd, int backlog); //一旦服务器调用listen,所用的套接字就能接收连接请求,下面函数获得连接请求并建立连接 #include <sys/socket.h> int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len); //用来发送数据的函数 #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); ssize_t sendto(int sockfd, const void *buf, size_t nbytes, int flags, const struct sockaddr *destaddr, socklen_t destlen); ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); //msghdr结构体至少包含如下 struct msghdr { void *msg_name; socklen_t msg_namelen; struct iovec *msg_iov; int msg_iovlen; void *msg_control; socklen_t msg_controllen; int msg_flags; }; //用来接收数据的函数 #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags); ssize_t recvfrom(int sockfd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict addrlen); ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); //套接字选项 #include <sys/socket.h> int setsockop(int sockfd, int level, int option, const void *val, socklen_t len); int getsockop(int sockfd, int level, int option, void *restrict val, socklen_t *restrict lenp); //TCP支持紧急标记(urgent mark),为帮助判断是否已经达到紧急标记,可以使用下面函数 #includ <sys/socket.h> int sockatmark(int sockfd);
相关推荐
《UNIX网络编程 卷1:套接字联网API源代码》是网络编程领域的一本经典著作,主要关注于UNIX系统中的网络通信,特别是基于套接字的编程接口。这本书深入探讨了如何使用套接字API来实现跨网络的通信,为开发者提供了...
《Unix网络编程卷1:套接字联网API(第3版)》是网络编程领域的一本经典著作,由Steven McQuain和W. Richard Stevens共同撰写。这本书详细介绍了Unix系统中的网络编程,尤其是套接字(Sockets)API的使用,是IT专业...
这本书详细介绍了在UNIX操作系统环境下如何使用套接字进行网络通信,是深入理解和实践网络编程的必备参考书籍。如果你对网络编程感兴趣但缺乏基础,建议先学习TCP/IP基础知识以及《Advanced Programming in the UNIX...
《UNIX网络编程卷1:套接字联网API(第3版)》是网络编程领域的一本经典著作,由W. Richard Stevens和Kurt W. Thompson共同撰写。这本书深入讲解了如何使用UNIX系统上的套接字接口进行网络通信,涵盖了从基本的TCP/...
通过阅读《UNIX网络编程卷1:套接字联网API(第3版)》,开发者不仅可以掌握套接字API的基本用法,还能学习到高级网络编程技巧,提升在UNIX/Linux环境下编写网络应用程序的能力。这本书是网络工程师、系统管理员以及...
《UNIX网络编程卷1:套接字联网API(第3版)》是网络编程领域的一本经典著作,由Bill Fenner和Andrew M. Rudoff共同撰写。这本书深入讲解了使用UNIX系统进行网络通信的核心技术——套接字(Sockets)API。在了解这个...
《UNIX网络编程 卷1:套接字联网API》是一本经典的计算机科学著作,由W. Richard Stevens撰写,深入浅出地介绍了UNIX系统中的网络编程技术,特别是套接字(Socket)API的使用。这本书是许多程序员和系统管理员学习...
特别对于网络IPC(进程间通信),作者从套接字描述符开始讲起,深入阐述了套接字的寻址、连接、数据传输、套接字选项以及非阻塞和异步I/O等。 书中还单独章节讲解了守护进程的编程规则、高级I/O技术、终端I/O、伪...
《UNIX网络编程卷1:协议》则聚焦于网络通信,涉及TCP/IP协议栈、套接字编程和网络应用层协议。以下是其主要知识点: 1. **网络基础知识**:介绍TCP/IP协议族的基本概念,包括IP、ICMP、TCP、UDP等协议的作用和工作...
在IT领域,Unix环境高级编程和Unix网络编程是两本非常经典的教材,它们为程序员提供了深入理解操作系统原理和网络通信的基础。这两本书是学习如何在Unix/Linux系统上编写高效、可靠的程序的重要参考资料。 《Unix...
《UNIX网络编程_卷1_套接字联网API第3版源代码》是网络编程领域的一本经典之作,由著名计算机科学家W. Richard Stevens撰写。这本书深入浅出地讲解了如何在UNIX系统中使用套接字(Sockets)进行网络通信,涵盖了从...
4. **网络编程**:Unix系统支持丰富的网络功能,书中详细阐述了套接字API的使用,包括TCP/IP协议族、UDP协议、套接字选项、并发服务器设计等。这为开发网络应用程序提供了基础。 5. **内存管理**:书中详细介绍了...
这一章节进一步深化了进程间通信的内容,包括远程过程调用(RPC)、套接字编程(Socket)等更为复杂的通信方式。 #### 十四、数据库函数库 数据库函数库提供了一种简单高效的方式,用于在UNIX环境下管理数据。这部分...
在这部分,读者将了解到如何利用Unix系统提供的网络编程接口来实现网络应用,如TCP/IP协议栈的工作原理、套接字的创建与操作、数据的发送与接收、多路复用I/O(如select和poll)、异步I/O等核心概念。同时,书中还...
《Unix环境高级编程》将详细介绍基于TCP/IP协议族的套接字编程,包括流套接字和数据报套接字的使用。 6. 系统编程API的使用和标准:书中强调了POSIX标准和其他相关标准的重要性,这些标准定义了如何在Unix系统上...