常用的Socket编程API函数

总结了一些网络编程中常用的API函数。

int socket(int domain,int type,int protocol);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:创建一个套接字。
  • 返回值:创建成功返回一个套接字的文件描述符,失败返回 -1。
  • 参数:
    domain:协议族。
    type:套接字类型。
    protocol:协议,一般设置为0 。

int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:把一个本地协议地址赋予一个套接字。
  • 返回值:成功返回 0,失败返回 -1。
  • 参数:
    sockfd:socket描述符。
    *addr:指向于特定协议的地址结构的指针。
    addrlen:该地址结构的长度。

int listen(int sockfd,int backlog);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:将套接字转换为监听状态,仅由服务器调用。
  • 返回值:成功返回 0,失败返回 -1。
  • 参数:
    sockfd:socket描述符。
    backlog:未完成连接队列已完成连接队列的总和的最大值。

int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:从已完成连接队列头返回下一个已完成连接,由TCP服务器调用。
  • 返回值:成功返回一个非负描述符,失败返回 -1。
  • 参数:
    sockfd:socket描述符。
    *cliaddr:返回已连接的对端客户进程的协议地址(可选)。
    *addrlen:指向存储cliaddr地址的长度(可选)。

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

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:建立与TCP服务器的连接,由TCP客户端调用。
  • 返回值:成功返回 0,失败返回 -1。
  • 参数:
    sockfd:socket描述符。
    *servaddr:指向套接字地址结构的指针,套接字地址结构必须包含服务器的IP地址和端口号。
    addrlen:servaddr的大小。

int send(int sockfd,const void *buf,size_t len,int flags);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:向已连接的套接字发送数据。
  • 返回值:成功返回已发送数据的字节数,失败返回 -1。
  • 参数:
    sockfd:已连接的socket描述符。
    *buf:待发送数据的缓冲区。
    len:发送缓冲区中数据的长度。
    flags:调用执行方式。

int recv(int sockfd,void *buf,size_t len,int flags);

所需头文件:<sys/types.h>,<sys/socket.h>

  • 函数作用:从已连接的套接字接收数据。
  • 返回值:成功返回已接收数据的字节数,失败返回 -1。
  • 参数:
    sockfd:已连接的socket描述符。
    *buf:待接收数据的缓冲区。
    len:接收缓冲区中数据的长度。
    flags:调用执行方式。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容