Linux下网络编程常用函数

本文详细介绍Linux下网络编程的基础函数,包括socket创建、监听、接受、绑定、文件操作(open/close)、数据传输(write/read)以及连接操作(connect),助您快速掌握网络编程核心技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下网络编程常用函数

保持更新

1. socket

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

socket 函数用来生成套接字,创建成功时返回文件描述符,失败时返回-1;

  • domain 套接字中使用的协议族(protocol family)信息,例如IPv4、IPv6;
  • type 套接字数据传输类型信息,即套接字的数据传输方式,面向连接(SOCK_STREAM)和面向消息(SOCK_DGRAM);
  • protocol 计算机间通信中使用的协议信息;
名称协议族
PF_INETIPv4互联网协议族
PF_INET6IPv6互联网协议族
PF_LOCAL本地通信的UNIX协议族
PF_PACKET底层套接字的协议族
PF_IPXIPX Novell协议族

2. listen

#include <sys/socket.h>
int listen(int sockfd, int backlog);

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

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

3. accept

#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

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

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

4. bind

#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);

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

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

5. open

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
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 <unistd.h>
int close(int fd);

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

  • fd 文件描述符

7. write

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbytes);

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

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

8. read

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t nbytes);

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

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

9. connect

#include <sys/socket.h>

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

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

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

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

  • 服务端接收连接请求;
  • 发生断网等异常情况而中断连接请求;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值