网络编程主要函数整理

socket()
int socket(int family, int type, int protocol);  //创建套接字
  • 功能介绍:在Linux系统中,一切皆文件。为了表示和区分已经打开的文件,UNIX/Linux会给文件分配一个ID,这个ID就是一个整数,被称为文件描述符。因此,网络连接也是一个文件,它也有文件描述符。通过socket()函数来创建一个网络连接或者说打开一个网络文件,socket()函数的返回值就是文件描述符,通过这个文件描述符我们就可以使用普通的文件操作来传输数据了。
  • 参数介绍:
    • family 代表协议族,在socket中只能是AF_INET
    • type 代表协议类型常见类型是SOCK_STREAM(TCP),SOCK_DGRAM(UCP)
    • protocol 代表具体的协议,对于标准套接字来说,其值是0。(原始套接字基本不会使用)
bind()
int connect(int sock_fd, struct sockaddr *serv_addr, int addrlen);//客户端请求连接函数
  • 功能介绍:客户端向服务端发起连接请求,当返回值是0时代表连接成功,返回值为-1时代表连接失败。
  • 参数介绍:
    • sock_fd:代表通过socket()函数返回的文件描述符,文件句柄
    • serv_addr: 代表目标服务器的协议族,网络地址以及端口号。是一个sockaddr 类型的指针。
    • addrlen :代表serv_addr参数内容的大小
listen()
 int listen(int sockfd, int backlog);//监听函数
  • 函数功能:listen函数的功能并不是等待一个新的connect的到来,真正等待connect的是accept函数。listen的操作就是当有较多的client发起connect时,server端不能及时的处理已经建立的连接,这时就会将connect连接放在等待队列中缓存起来。这个等待队列的长度由listen中的backlog参数来设定。当listen运行成功时,返回0;运行失败时,返回值为-1.

  • 参数说明:

    • sockfd:是前面socket创建的文件描述符;
    • backlog:是指server端可以缓存连接的最大个数,也就是等待队列的长度
accept()
int accept(int sockfd, struct sockaddr *client_addr, socklen_t *addrlen);
  • 函数功能:accept函数等待客户端的连接,如果没有客户端连上来,它就一直等待,这种方式称为阻塞。accept等待到客户端的连接后,创建一个新的socket,函数返回值就是这个新的socket,服务端用于这个新的socket和客户端进行报文的收发。
  • 参数介绍:
    • sockfd 是已经被listen过的socket
    • client_addr :用于存放客户端的地址信息,其中包含客户端的协议族,网络地址以及端口号。如果不需要客户端的地址,可以填0。
    • addrlen :用于存放参数client_addr的长度
conect()
 int connect(int sock_fd, struct sockaddr *serv_addr, int addrlen);//客户端请求连接函数
  • 函数功能:客户端向服务端发起连接请求,当返回值是0时代表连接成功,返回值为-1时代表连接失败。
  • 参数介绍:
    • sock_fd 代表通过socket()函数返回的文件描述符。
    • serv_addr :代表目标服务器的协议族,网络地址以及端口号。是一个sockaddr 类型的指针。
    • addrlen :代表第二个参数内容的大小。
send()
int send(int sockfd, const void *buf,int len, int flags)
  • 函数功能:send函数用于把数据通过socket发送给对端。不论是客户端还是服务端,应用程序都用send函数来向TCP连接的另一端发送数据。客户端通过该函数向服务器应用程序发送数据。函数返回已发送的字节数。出错时返回-1
  • 参数介绍:
    • sockfd代表 发送端的套接字描述符,即通过socket()函数返回的文件描述符。
    • buf 指明需要发送数据的内存地址,可以是C语言基本数据类型变量的地址,也可以是数组、结构体、字符串。
    • len 指明实际发送数据的字节数。
    • flags 一般设置为0,其他数值意义不大。
recv()
int send(int sockfd, const void *buf, int len, int flags)
  • 函数功能:recv函数用于接收对端socket发送过来的数据。不论是客户端还是服务端,应用程序都用recv函数接受来自TCP连接的另一端发送过来的数据。如果socket对端没有发送数据,recv函数就会等待,如果对端发送了数据,函数返回接收到的字符数。出错时返回-1。如果socket被对端关闭,返回值为0。
  • 参数介绍:
    • sockfd代表接收端的套接字描述符,即通过socket()函数返回的文件描述符。
    • buf 为用于接收数据的内存地址,可以是C语言基本数据类型变量的地址,也可以是数组、结构体、字符串。只要是一块内存就行了。
    • len 指明需要接收数据的字节数。不能超过buf的大小,否则内存溢出。
    • flags 一般设置为0,其他数值意义不大。

整理了一下笔记,参考原文:https://blog.csdn.net/ZH0314/article/details/77387162

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值