保持更新
#include
int socket(int domain, int type, int protocol);
socket
函数用来生成套接字,创建成功时返回文件描述符,失败时返回-1;
domain
套接字中使用的协议族(protocol family)信息,例如IPv4、IPv6;type
套接字数据传输类型信息,即套接字的数据传输方式,面向连接(SOCK_STREAM)和面向消息(SOCK_DGRAM);protocol
计算机间通信中使用的协议信息;名称 | 协议族 |
---|---|
PF_INET | IPv4互联网协议族 |
PF_INET6 | IPv6互联网协议族 |
PF_LOCAL | 本地通信的UNIX协议族 |
PF_PACKET | 底层套接字的协议族 |
PF_IPX | IPX Novell协议族 |
#include
int listen(int sockfd, int backlog);
listen
函数将套接字设置为可接收连接状态,并设置请求连接等待队列的长度;成功返回0,失败返回-1;
sockfd
socket文件描述符;backlog
请求连接等待队列长度#include
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
调用 accept
函数用于接收连接请求;成功返回请求方的socket文件描述符,失败返回-1;
sockfd
服务器套接字的文件描述符;struct sockaddr *addr
保存发起连接请求的客户端地址信息的变量地址,socklen_t *addrlen
第二个参数的 addr
结构体的长度;#include
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
bind
为套接字分配地址;成功返回0,失败返回-1;
sockfd
要分配地址信息(IP地址和端口号)的套接字文件描述符;struct sockaddr *myaddr
存有地址信息的结构体变量的地址值;socklen_t addrlen
第二个结构体变量的长度;#include
#include
#include
int open(const char *filepath, int flag);
open
函数用于打开文件;成功返回文件描述符,失败返回-1;
path
文件名的字符串地址;flag
文件打开模式文件打开模式 | 含义 |
---|---|
O_CREAT | 必要时创建文件 |
O_TRUNC | 删除全部现有数据 |
O_APPEND | 维持现有数据,将新写入的数据添加到其后面 |
O_RDONLY | 只读打开 |
O_WRONLY | 只写打开 |
O_RDWR | 读写打开 |
#include
int close(int fd);
close
函数关闭相应的文件;成功返回0,失败返回-1;
fd
文件描述符#include
ssize_t write(int fd, const void *buf, size_t nbytes);
write
函数向文件写入(传输)数据;成功返回写入的字节数,失败返回-1;
fd
数据传输对象的文件描述符;buf
保存传输数据的缓存地址;nbytes
传输数据的字节数;#include
ssize_t read(int fd, void *buf, size_t nbytes);
read
函数用来接收数据;成功时返回接收的字节数(但遇到文件结尾则返回0),失败返回-1;
fd
数据接收对象的文件描述符;buf
保存接收数据的缓冲地址值;nbytes
接收数据的最大字节数;#include
int connect(int sock, struct sockaddr * servaddr, socklen_t addrlen);
客户端调用 connect
函数向服务器发起连接请求;
sock
客户端套接字文件描述符;servaddr
保存目标服务器地址信息的变量地址值;servaddr
的地址变量长度;客户端调用 connect
函数后,发生以下情况之一才会返回(完成函数调用);