mirror of
https://github.com/riba2534/TCP-IP-NetworkNote.git
synced 2026-02-03 01:53:19 +08:00
修改结构
This commit is contained in:
75
README.md
75
README.md
@@ -1,2 +1,73 @@
|
||||
# TCP-IP-NetworkNote
|
||||
《TCP/IP网络编程》笔记
|
||||
# 《TCP/IP网络编程》学习笔记
|
||||
|
||||
## 理解网络编程和套接字
|
||||
|
||||
### 电话套接字
|
||||
|
||||
以电话机打电话的方式来理解套接字。
|
||||
|
||||
**调用 socket 函数(安装电话机)时进行的对话**:
|
||||
|
||||
> 问:接电话需要准备什么?
|
||||
>
|
||||
> 答:当然是电话机。
|
||||
|
||||
有了电话机才能安装电话,于是就要准备一个电话机,下面函数相当于电话机的套接字。
|
||||
|
||||
```c
|
||||
#include <sys/socket.h>
|
||||
int socket(int domain, int type, int protocol);
|
||||
//成功时返回文件描述符,失败时返回-1
|
||||
```
|
||||
|
||||
**调用 bind 函数(分配电话号码)时进行的对话**:
|
||||
|
||||
> 问:请问我的电话号码是多少
|
||||
>
|
||||
> 答:我的电话号码是123-1234
|
||||
|
||||
套接字同样如此。就想给电话机分配电话号码一样,利用以下函数给创建好的套接字分配地址信息(IP地址和端口号):
|
||||
|
||||
```c
|
||||
#include <sys/socket.h>
|
||||
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
|
||||
//成功时返回0,失败时返回-1
|
||||
```
|
||||
|
||||
调用 bind 函数给套接字分配地址之后,就基本完成了所有的准备工作。接下来是需要连接电话线并等待来电。
|
||||
|
||||
**调用 listen 函数(连接电话线)时进行的对话**:
|
||||
|
||||
> 问:已架设完电话机后是否只需链接电话线?
|
||||
>
|
||||
> 答:对,只需要连接就能接听电话。
|
||||
|
||||
一连接电话线,电话机就可以转换为可接听状态,这时其他人可以拨打电话请求连接到该机。同样,需要把套接字转化成可接受连接状态。
|
||||
|
||||
```c
|
||||
#include <sys/socket.h>
|
||||
int listen(int sockfd, int backlog);
|
||||
//成功时返回0,失败时返回-1
|
||||
```
|
||||
|
||||
连接好电话线以后,如果有人拨打电话就响铃,拿起话筒才能接听电话。
|
||||
|
||||
**调用 accept 函数(拿起话筒)时进行的对话**:
|
||||
|
||||
> 问:电话铃响了,我该怎么办?
|
||||
>
|
||||
> 答:接听啊。
|
||||
|
||||
```c
|
||||
#include <sys/socket.h>
|
||||
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
|
||||
//成功时返回文件描述符,失败时返回-1
|
||||
```
|
||||
|
||||
网络编程中和接受连接请求的套接字创建过程可整理如下:
|
||||
|
||||
1. 第一步:调用 socket 函数创建套接字。
|
||||
2. 第二步:调用 bind 函数分配IP地址和端口号。
|
||||
3. 第三步:调用 listen 函数转换为可接受请求状态。
|
||||
4. 第四步:调用 accept 函数受理套接字请求。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user