欢迎光临
我们一直在努力

socket/bind/listen/accept的简单介绍

个人理解, 网络编程接口的关键在于对文件的操作; 在Linux中,网络抽象套接字抽象成文件,网络间通信可以看作两台或者多台主机间 文件的交互。

socket

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

 

  • socket创建一个套接字(相当于open一个文件);
  • domain 表示系统所选择的协议簇
  • type 表示服务的类型(流服务,数据服务)
  • protocol 一个具体的协议

bind

网络编程中,用ip:port表示一个服务,映射到Linux网络编程中,便是用

struct sockaddr {
	sa_family_t sa_family;
	char sa_data[14]	
}

 

个人参照计算机网络自顶向下这本书,将一台服务器上的服务理解成一幢🏠,而socket创建的套接字 可以理解成给这个房子安装一扇门,如若没有门,封闭的房子便就是一个黑盒子了,进不去出不来,只能成为一个观赏品,无其他作用了。

为了给🏠装上这扇门,便需要调用bind接口,其实现

#include <sys/types.h>
#include <sys/socket.h>
int bind(int fd, const struct sockaddr* my_addr, socklen_t addrlen);

上述中, my_addr 表示一个服务, fd表示一扇门, 将这扇门装在my_addr🏠上便是bind完成的工作。

listen

当我们给🏠装好门以后, 该房子就可以允许进出了。现在假设你是这个🏠的主人,当别人想要访问你的时候,一下子会到达很多人,而你一次可能只能见一个,此时这些人就在门外等待,而你也需要统计有多人在排队, 这个统计便是listen的工作(可能比喻不恰当, 银行排队是不是更好?)

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

fd便是门, backlog便是你想见的人数,纵使人多于backlog你也不打算见了。

accept

accept功能 便是相当于你给拜访者分配一个专员

赞(0) 打赏

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏