Linux下网络编程常用函数

Linux下网络编程常用函数

保持更新

1. socket

#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协议族

2. listen

#include 
int listen(int sockfd, int backlog);

listen 函数将套接字设置为可接收连接状态,并设置请求连接等待队列的长度;成功返回0,失败返回-1;

  • sockfd socket文件描述符;
  • backlog 请求连接等待队列长度

3. accept

#include 
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

调用 accept 函数用于接收连接请求;成功返回请求方的socket文件描述符,失败返回-1;

  • sockfd 服务器套接字的文件描述符;
  • struct sockaddr *addr 保存发起连接请求的客户端地址信息的变量地址,
  • socklen_t *addrlen 第二个参数的 addr 结构体的长度;

4. bind

#include 
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);

bind 为套接字分配地址;成功返回0,失败返回-1;

  • sockfd 要分配地址信息(IP地址和端口号)的套接字文件描述符;
  • struct sockaddr *myaddr 存有地址信息的结构体变量的地址值;
  • socklen_t addrlen 第二个结构体变量的长度;

5. open

#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 读写打开

6. close

#include 
int close(int fd);

close 函数关闭相应的文件;成功返回0,失败返回-1;

  • fd 文件描述符

7. write

#include 
ssize_t write(int fd, const void *buf, size_t nbytes);

write 函数向文件写入(传输)数据;成功返回写入的字节数,失败返回-1;

  • fd 数据传输对象的文件描述符;
  • buf 保存传输数据的缓存地址;
  • nbytes 传输数据的字节数;

8. read

#include 
ssize_t read(int fd, void *buf, size_t nbytes);

read 函数用来接收数据;成功时返回接收的字节数(但遇到文件结尾则返回0),失败返回-1;

  • fd 数据接收对象的文件描述符;
  • buf 保存接收数据的缓冲地址值;
  • nbytes 接收数据的最大字节数;

9. connect

#include 

int connect(int sock, struct sockaddr * servaddr, socklen_t addrlen);

客户端调用 connect 函数向服务器发起连接请求;

  • sock 客户端套接字文件描述符;
  • servaddr 保存目标服务器地址信息的变量地址值;
  • 以字节为单位传递已传递给第二个结构体参数 servaddr 的地址变量长度;

客户端调用 connect 函数后,发生以下情况之一才会返回(完成函数调用);

  • 服务端接收连接请求;
  • 发生断网等异常情况而中断连接请求;

你可能感兴趣的:(网络编程,cpp,unix,linux,服务器)