linux网络编程概念(一)

来源:互联网 发布:淘宝店怎么做虚拟产品 编辑:程序博客网 时间:2024/06/12 20:15

AF表示地址族(address family)
PF表示协议族(protocol family)
domain参数
AF_UNIX 内核中通信 sockaddr_un
AF_INET 通过ipv4 sockaddr_in
AF_INET6 通过ipv6 sockaddr_in6
socket分为两种类型,一种是流(TCP),一种是数据报(UDP)
其中流是面向链接的可靠的但是不支持保留消息边界,数据报不是面向链接也不可看的但是可以保留消息边界。

#include<sys/socket.h>//创建一个socket//type参数指定socket类型(SOCK_STREAM或者SOCK_DGRAM),protocol参数指定为0即可,也可指定为非零值int socket(int domain,int type,int protocol);   //成功返回文件描述符,失败返回-1//将socket绑定到地址//sockfd就是socket的返回值,addr参数是一个指针,指向一个指定该socket绑定到的地址的结构,addrlen参数指定了地址结构的大小int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);//成功返回0,失败-1//struct sockaddr结构的定义    sa_family_t sa_family;    char saz_data[14];//监听接入链接(被动)//backlog参数允许相知未决连接(客户端在服务器调用accept()之前调用connect())的数量,在这个限制之内的连接请求会立即成功int listen(int sockfd,int backlog); //成功返回0,失败-1//接受连接//该函数创建一个新socket,该新socket会与执行sonnect()的对等socket进行连接int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);`   //成功返回文件描述符,失败返回-1//连接到对等socketint connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen);//成功返回0,失败-1//连接终止close();ssize_t recvfrom(int sockfd,void *buffer,size_t length,int flags,struct sockaddr *src_addr,socklen_t *addrlen); //成功返回收到的字节数,失败-1ssize_t sendto(int sockfd,const void *buffer,size_t length,int flags,const struct sockaddr *dest_addr,socklen_t addrlen);   //成功返回发送的字节数,失败-1
原创粉丝点击