
# 预备和开始

## 预备阶段

我们的聊天程序将使用基于TCP的简单文本协议。
该协议由utf-8消息组成，由`\ n`分隔。

客户端连接到服务器，并把第一行作为登录信息发送出去。
之后，客户端可以使用以下语法将消息发送给其他客户端：

```text
login1, login2, ... loginN: message
```
每个指定客户端之后都会接受到一个`from login: message` 信息。

一个会话看上去应该是这个样子:
```text
在Alice的电脑上:   |   在Bob的电脑上:

> alice                |   > bob
> bob: hello               < from alice: hello
                       |   > alice, bob: hi!
                           < from bob: hi!
< from bob: hi!        |
```
聊天服务器的主要挑战是跟踪数量巨大的并发连接。聊天客户端的主要挑战是管理并发的传出消息、传入消息和用户输入。
## 开始
让我们使用cargo创建一个新的项目,并进入该项目目录:
```text
cargo new a-chat
cd a-chat
```
添加一下依赖到cargo.toml
```toml
[dependencies]
futures = "0.3"
async-std = "1"
```
当然你也可以直接在终端使用一下命令直接添加上述依赖:
```text
cargo add futures async-std
```


聊天服务器的主要难点是追踪多个并发连接，而聊天客户端的主要难点是管理发送消息，接收消息和用户输入的并发。

## 开始

创建新的 Cargo 项目：

```bash
$ cargo new a-chat
$ cd a-chat
```

将以下内容加入 `Cargo.toml` 中：

```toml
[dependencies]
futures = "0.3.0"
async-std = "1"
```
