1 socket地址API
socket含义ip地址和端口(ip,port)
2 socket基础API(#include <sys/socket.h>)
创建socket、命名socket、监听socket、
接受连接、发起连接、读写数据、获取地址信息、
检测外带标记、读取和设置socket选项
3 网络信息API(#include <sys/netdb.h>)
主机名称和ip地址之间的转换
服务名称和端口之间的转换
创建、命名、监听socket
创建socket
#include <sys/socket.h>
#include <sys/types.h>
int socket(int domain, int type, int protocol) #创建一个socket套接字
#domain 协议族AF_INET或者AF_INET6
#type SOCK_STREAM或SOCK_DGRAM或SOCK_UGRAM
#protocol 默认为0
命名socket
#include <sys/types.h>
#include <sys/socket.h>
在服务端,创建的socket只有与socket地址绑定之后,才能够让客户端知道连接地址。
int bind(int sockfd, const struct sockaddr* server_addr, socklen_t addrlen)
#将server_addr的地址给sockfd
#成功为0,失败为-1,并且设置error
监听socket
#include <sys/types.h>
#include <sys/socket.h
int listen(int socffd, int backlog)
#backlog内核中监听队列的最大长度
#成功为0,失败为-1,并且设置error
接受socket连接
#include <sys/types.h>
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr* client_addr, socklen_t* addrlen)
#sockfd 监听的socket
#client_addr 客户端的socket地址(fd信息)
#addrlen 客户端的socket地址的长度
#返回一个socket的文件描述符(fd),这是服务端和客户端的通道
创建(发起)socket连接
#include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *server_addr, socklen_t addrlen)
#sockfd 返回系统调用的socket,这是和server通信的唯一通道(连接)
#server_adddr 服务器(server)地址
#返回 成功是返回0,失败时返回-1,并且设置errno
errno的值(ETIMEOUT 连接超时
ECONNREFUSED 端口不存在)
关闭(socket)连接
#include <unistd.h>
int close(int fd)
#关闭连接
#include <sys/socket.h>
int shutdown(int sockfd, int howto)
#howto参数
SHUT_RD 关闭sockfd上读的一端
SHUT_WR 关闭sockfd上写的一端
SHUT_RDWR 同时关闭读和写