相关函数列表
//创建一个套接字 #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);
相关推荐
第16章 网络IPC:套接字 437 第17章 高级进程间通信 469 第18章 终端I/O 507 第19章 伪终端 541 第20章 数据库函数库 567 第21章 与网络打印机通信 603 附录A 函数原型 647 附录B 其他源代码...
第16章 网络IPC:套接字 437 16.1 引言 437 16.2 套接字描述符 437 16.3 寻址 439 16.3.1 字节序 440 16.3.2 地址格式 441 16.3.3 地址查询 442 16.3.4 将套接字与地址绑定 449 16.4 建立连接 450...
《UNIX网络编程(卷1):套接字联网API(第3版)》是一部UNIX网络编程的经典之作!书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/...
第16章 网络IPC:套接字 16.1 引言 16.2 套接字描述符 16.3 寻址 16.3.1 字节序 16.3.2 地址格式 16.3.3 地址查询 16.3.4 将套接字与地址绑定 16.4 建立连接 16.5 数据传输 16.6 套...
第16章网络ipc:套接字437 16.1 引言437 16.2 套接字描述符437 16.3 寻址439 16.3.1 字节序440 16.3.2 地址格式441 16.3.3 地址查询442 16.3.4 将套接字与地址绑定449 16.4 建立连接450 16.5 数据传输452 ...
第16章 网络IPC:套接字 437 16.1 引言 437 16.2 套接字描述符 437 16.3 寻址 439 16.3.1 字节序 440 16.3.2 地址格式 441 16.3.3 地址查询 442 16.3.4 将套接字与地址绑定 449 16.4 建立连接 450...
介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,是...
这套应用程序接口也被用于Unix域套接字(Unix domain sockets),后者可以在单机上作为进程间通讯(IPC)频道的接口。 这种基于流的传输层接口(TLI)应用程序接口为套接字应用程序接口提供了一种选择。 不过,最近...
第16章网络ipc:套接字437 16.1 引言437 16.2 套接字描述符437 16.3 寻址439 16.3.1 字节序440 16.3.2 地址格式441 16.3.3 地址查询442 16.3.4 将套接字与地址绑定449 16.4 建立连接450 16.5 数据传输452 ...
网络IPC:套接字 437 16.1 引言 437 16.2 套接字描述符 437 16.3 寻址 439 16.3.1 字节序 440 16.3.2 地址格式 441 16.3.3 地址查询 442 16.3.4 将套接字与地址绑定 449 16.4 建立连接 450 16.5 ...
《UNIX网络编程 卷2:进程间通信(英文版·第2版)》从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、...
全书共9章,内容包括:基本概念、基本文件I/O、高级文件I/0、终端I/O、进程与线程、基本进程间通信、高级进程间通信、网络技术与套接字,以及信号与定时器等。涉及POSIX、FreeBSD、Solaris、Linux等几大主流系统...
UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信...
6.4.3 一个套接字是怎样在网络上传输数据的?......... 143 6.5 套接字的一些基本知识... 144 6.5.1 基本结构............ 144 6.5.2 基本转换函数..... 145 6.6 基本套接字调用........... 147 6.6.1 socket() 函数...
Unix TCP/IP 分层协议以及基于Linux的socket套接字网络编程学习笔记。
UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信...
第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要特性3 1.3UNIX系统的发展史4 1.4开源软件与UNIX的推广发展6 1.4.1开源...
UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信...
UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信...