Table of Contents
个人理解, 网络编程接口的关键在于对文件的操作; 在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功能 便是相当于你给拜访者分配一个专员
评论前必须登录!
注册