Skip to content

Commit

Permalink
✏更新 网络编程
Browse files Browse the repository at this point in the history
  • Loading branch information
0xcaffebabe committed Oct 9, 2020
1 parent df87572 commit 3bff20e
Showing 1 changed file with 17 additions and 16 deletions.
33 changes: 17 additions & 16 deletions 计算机系统/程序间的交互和通信/网络编程.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
# CS编程模型
# 网络编程

## CS编程模型

![](http://img.wandouip.com/crawler/article/2019213/bbf3339d70054afcf2734d37807bd5a1)

# 网络
## 网络

![](https://img-blog.csdn.net/20131002151841984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdoYW9keDA4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

# 全球IP因特网
## 全球IP因特网

![](https://img-blog.csdn.net/20131002160153031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdoYW9keDA4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

## IP地址
### IP地址

>IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
## 因特网域名
### 因特网域名

## 因特网连接
### 因特网连接

# 套接字接口
## 套接字接口

```c
/*通用的socket地址结构 (用于connect, bind, 和accept) */
Expand All @@ -41,16 +43,15 @@ struct sockaddr_in {
#include <sys/types.h>
#include <sys/socket.h>

int socket(int domain,int type,int protocol);
int connect(int clientfd,const struct socketaddr *addr,
socklen_t addrlen);
int bind(int sockfd,const struct sockaddr *addr,
socklen_t addrlen);
int listen(int sockfd,int backlog);
int accept(int listenfd,struct sockaddr *addr,int *addrlen);

int socket(int domain,int type,int protocol); // 使用此函数创建一个套接字描述符
int connect(int clientfd,const struct socketaddr *addr,socklen_t addrlen); // 建立与服务端的连接
int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen); // 服务器用来绑定fd与网络地址
int listen(int sockfd,int backlog); // 服务器将socketfd转换为一个监听socketfd 从而接受客户端的连接请求
int accept(int listenfd,struct sockaddr *addr,int *addrlen); // 返回已连接描述符
```
为什么需要区分监听描述符与已连接描述符 答案是为了并发 服务器端可以通过多进程或者多线程的方式处理多个已连接描述符 从而对多个用户提供服务
## 主机和服务的转换
```c
Expand All @@ -60,7 +61,7 @@ int accept(int listenfd,struct sockaddr *addr,int *addrlen);
int getaddrinfo(const char *host,const char *service,
const struct addrinfo *hints,
struct addrinfo **result);
struct addrinfo **result); // 将主机名端口号等信息转换为套接字地址结构
void freeaddrinfo(struct addrinfo *result);
const char *gai_strerror(int errorcode);
Expand Down

0 comments on commit 3bff20e

Please sign in to comment.