VCC：给 UNIX 程序员的酷炫命令行聊天软件
VCC

> 
> VCC 是一个 UNIX/Linux 上的命令行聊天软件。
> 
> 
> 


![](/data/attachment/album/202204/03/100501bn58dwhxz6k28nhy.jpg)


### VCC 简介


我热爱 UNIX/Linux 和 C 语言，VCC（very cool chat）是我和其他人开发的一个业余（课余）作品。它是用 C 编写的，是一个运行在 UNIX/Linux 上的命令行聊天软件。VCC 目前还处于相当早期的阶段。这次将它介绍给大家是希望引来一些关注，无论是建议还是 bug 报告。当然，要是你对这个项目感兴趣，也非常欢迎你参与到开发当中。


我们开发它一方面是为了在命令行上更好的进行聊天对话，另一方面纯粹为了提升技术以及为了好玩。使用 VCC，你可以在写代码的时候快速切换到它所在终端标签聊天，这一直是我的一个梦想。


当前版本的 vcc 1.5.2/vccd 1.6.1 支持用户登录、广播消息、创建 / 加入会话，以及在会话中聊天。


VCC 采用 GPLv3 许可证，目前贡献者有我（intirain）以及 3swordman。


### 安装 VCC


VCC 分为客户端（即 `vcc`）以及服务端（即 `vccd`），托管在码云上：


* `vcc`：(<https://gitee.com/intirain/vcc.git>)
* `vccd`：(<https://gitee.com/intirain/vccd.git>)


将上述代码仓库克隆到本地后，进入该目录并且运行 `make` 来编译。你会得到一个可执行文件 `vcc` 或者 `vccd`。


### 运行 vcc 客户端


不提供参数直接运行客户端，会连接到我建立的默认服务器（`124.223.105.230`）：



```
vcc $ ./vcc 

```

它将会提示你输入用户名以及密码。如果你是游客，则可使用游客账户（用户名和密码都是 `guest`）。而如果你想要获得一个账号，请向我发邮件（ <mailto:intirain@163.com> ）联系我。


如果你想要连接到自己那有着 128 个核心、1 TB 内存、SSD 1 YB 的小型服务器，请运行：



```
vcc $ ./vcc [服务器 IP 地址] # 当前还不支持域名

```

登录成功之后即可开始聊天，只需要输入消息并且回车即可。过长的信息（大约 200 字节以上）会被截断。


![](/data/attachment/album/202204/03/100517yt1qiqlg6jyqg1q2.png)


### 运行自己的 vccd 服务器端


你可以在 46 端口上运行自己的 `vccd` 服务。


以下命令需要 root 权限。


如果你是第一次运行 `vccd`，首先请执行安装脚本：



```
vccd $ sudo scripts/install

```

该脚本会创建文件 `/etc/vccd-runtime`，并且在其中记录了 `vccd` 的运行时目录的位置（`$HOME/.vccd-runtime`）。该目录中保存着用户信息（当前还没有加入聊天记录功能），具体的位置是 `users/用户名`，每个文件都是一个采用本机字节序的结构体。



```
vccd $ sudo ./vccd

```

上列命令只是启动了 `vccd` 守护进程（严格来说，它只能算一个运行于后台的程序，并不是“守护进程”），而没有创建任何用户。运行如下命令可以创建用户（不需要重启 `vccd`）：



```
vccd $ sudo scripts/adduser <用户名> <密码>

```

### vcc 命令


`vcc` （客户端）支持命令，它的命令都以 `-` 开头。以下是当前 `vcc` （1.5.2）支持的所有命令，可以在连接到服务器的 `vcc` 客户端里输入 `-help` 命令查看：



```
#000 intirain$: -help
-help:	Show information about every message. 
-quit:	Disconnect to server and exit vcc. 
-ls:	List all users online now. 
-rate:	Change message refresh rate. 
-newse:	Create a new session. 
-currs:	Get current session id. 
-swtch:	Switch to another session. 
-lsse:	List all sessions created. 
#000 intirain$: 

```

以下是对每一条命令的详细描述：




| 命令名称 | 描述 |
| --- | --- |
| `-help` | 显示所有命令的帮助信息 |
| `-quit` | 退出 `vcc`（相当于杀掉它） |
| `-ls` | 查看当前在线的所有用户 |
| `-rate` | 设置刷新率 |
| `-newse` | 新建一个会话 |
| `-currs` | 查看当前会话 id（sid） |
| `-swtch` | 加入另一个会话 |
| `-lsse` | 查看服务器上所有已经创建了的会话 |


说明：


* 刷新率：`vcc` 需要时序性的请求服务器来获取新消息。刷新率以赫兹为单位，默认为 1 Hz （即每秒刷新一次）。刷新率不得超过 1000 Hz （即每一毫秒刷新一次）。
* 会话：`vcc` 中的群聊叫做“会话”。会话是由一或多个用户组成的聊天室，0 号会话为大厅，所有人都在其中。会话无法退出。现在还不支持销毁一个会话，只能通过杀掉 `vccd` 来手动完成。
* 会话不会退出，因此在加入另一会话后你仍在原先的会话中，仍会收到原先会话中的消息。但是你在加入另一会话后发送的消息，并不会被原先会话中的人收到。会话的创建者在会话创建后就移植在会话中。


`vcc` 还没有加入命令行参数的支持，也就是说所有的参数都需要你在键入该命令交互式输入。


### VCC 的输出信息


VCC 使用了 ANSI 的 CSI 转义，但没有检查当前终端对该标准的支持。如果你在类似串口的终端上运行 `vcc`，将会直接得到没有渲染的转义字符。`vcc` 的配色是可更改的，默认的配色主题在 `pretty.c`中定义，是一个 C 语言结构体，该结构体在 `include/vcc/pretty.h` 中定义。


如果你觉得当前默认的配色不甚好看，完全可以在 `pretty.c` 中新建自己的配色，也可以复制并更改默认配色。我们也鼓励大家将自己认为好看的配色 PR 到码云仓库，我们在看到后会第一时间合并。


### 参与 VCC 的开发


`vcc` 以及 `vccd` 是以 GPL 许可证发布的，属于我们的 “inti 计划”旗下项目之一。我们鼓励你参与开发改进它，抱歉，我们无力为此支付报酬，参与开发是无偿的。


“inti 计划”是我们（其实也就俩人）创建的一个计划，目的是为了将优秀的自由软件（Linux 以及 GNU 计划）推向社会。我们计划开发的项目是 GNU 计划中所不包含的软件或者库，采用的编程语言为 C/C++。非常欢迎大家的加入。


VCC 还处于非常早期的开发阶段，但它应该已经具备了一个基本聊天软件的功能。我们当然希望你能够使用它、改进它，并且将它推广给身边使用 UNIX/Linux 的人们。目前，我们正在稳定当前的版本。将来，它也许会成为一个不错的社交软件，动态之类的高级功能也会实现。


顺便说一句，VCC 的 Windows 移植版本正在开发中，预计还需要几周的时间（毕竟我们只有周末才能编程 :( ）。移植之后的 VCC 应该不会保留配色（因为 Windows 并不支持 CSI 转义）。




---


作者简介：intirain，喜欢 UNIX、x86、RISC-V 上的 C。




---


via: <https://github.com/LCTT/Articles/pull/13>


作者：[intirain](https://gitee.com/intirain) 编辑：[wxy](https://github.com/wxy)


本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出


OK
-
[Notifications](/login?return_to=%2FLCTT%2FArticles)You must be signed in to change notification settings -
[Fork 12](/login?return_to=%2FLCTT%2FArticles)

## Conversation

[Learn more about bidirectional Unicode characters](https://github.co/hiddenchars)

![wxy](https://avatars.githubusercontent.com/u/128338?s=60&v=4)


**suggested changes**

[wxy](/wxy)Mar 30, 2022

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

@@ -0,0 +1,219 @@ | |||

# vcc | 给 UNIX 程序员的酷炫命令行聊天软件 | |||

|
|||

subject: vcc | 给 UNIX 程序员的酷炫命令行聊天软件 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

开头部分的元信息，请按照模板写入，也就是保持 `[#]: subject: "文章标题，不超过 60 个字"`

这种格式.

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

author: intirain (intirain@163.com) | ||

|
||

keywords: UNIX、聊天软件 | ||

|


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

元信息之后，是标题 ，即：

```
文章标题，不超过 60 个字
======
```


##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

keywords: UNIX、聊天软件 | ||

|
||

vcc （very cool chat）是一个 UNIX 上的命令行聊天软件。 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

此处介绍过于简略。建议用 1-2 句话描述本文目的（介绍一个自己开发的小工具）、介绍的工具是什么（vcc）、这个工具是用在什么场景的，甚至独特之处。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

### vcc 简介 | ||

|
||

vcc 是一个用 C 编写的运行在 UNIX 上的聊天软件。现在，（vcc 1.5.2，vccd 1.6.1）它支持用户登录、广播消息、创建 / 加入会话以及在会话中聊天。vcc 以及 vccd 采用 GPLv3 许可证，贡献者有我（intirain）以及 3swordman。 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

建议补充如下信息：

- 开发此工具的初衷，可以是因为对某些工具不爽，可以是满足自己的需求，甚至只是好玩。
- 此工具的使用场景
- 此工具的特点、主要功能，可以贴张截图，使读者可以有个直观印象。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

克隆到本地后，进入该目录并且运行 `make` 来编译。你会得到一个可执行文件 “vcc” 或者 “vccd”。对于客户端，如果你想连接到默认服务器（(124.223.105.230)），请运行： | ||

|
||

```bash |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

不必在 ``` 之后指明 `bash`

因为这样带了格式。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

|
||

|
||

### vcc 的输出信息 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

这一节不适合作为一篇宣传文章的内容出现。建议删去。

倒是可以截图一些你们用此工具进行的对话。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

### 参与 vcc 的开发 | ||

|
||

vcc 以及 vccd 是以 GPL 发布的，并且是我们 inti 计划 [^6] 的其中之一，我们鼓励你参与开发改进它（据我所知，vccd 就包含这一个巨大的内存泄露问题，即使是登录失败或者是已经退出的用户也会占用 100 多字节的内存）。当然，开发是无偿的（当然我们也很希望有人能够为 vcc 捐款！这些钱一部分将用于服务器以及域名的购买，一部分塞到我们自己腰包里头 :-)）。 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

我很乐意做一个捐款人。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

|
||

vcc 刚刚开始开发，但它应该已经具备了一个基本聊天软件的功能。我们当然希望您能够使用它，并且将它推广给身边使用 UNIX 的人们，它会变得越来越好用的。 | ||

|


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

可以考虑在此处增加一个横向对比，比如和 `w`

/`wall`

命令、老式 BBS 聊天命令的对比。

或者，增加一节路线图，即以后考虑的功能、特性等。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

|
||

|
||

作者简介: intirain，喜欢 UNIX、x86、RISC-V 上的 C。 |


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

模板的末尾部分也不能丢。

##
[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)
Outdated

[contributions/use-vcc-to-chat.md](/LCTT/Articles/pull/13/files/19a133cc38d7f7f2c3cac16948566f92cafc345e#diff-c01e5125af54f338d3f3bd218371dd585d1c1d3fdbc7be4d631c9ea2dc437983)Outdated

|
||

来创建一个新的用户。 | ||

|
||

|


There was a problem hiding this comment.

### Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. [Learn more](https://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment).

删除不必要的空行。

最后，文件名要符合格式。 |


上课忘了过来看，拖了两天抱歉。markdown 几乎能算没用过（捂脸），人也不甚聪明。捐款什么的感觉像伸手要钱了，不太合适，删了。 另外，这个稳定版本的时间不会很短，所以动态啥的应该好久以后才能做彳亍了。

github 又断了，可恶。上网课没来得及检查，晚了几天抱歉。markdown 基本能说是没用过，太尴尬了。另外捐款啥的，搞得道德绑架一样，不太合适，删了。

主要修订内容：
|


少改了一下，不太想让人注意到初中生，尽管流量可能会大很多，不然软件宣传的意义就完全不一样了

![wxy](https://avatars.githubusercontent.com/u/128338?s=60&v=4)


**approved these changes**

[wxy](/wxy)Apr 3, 2022

终于用上 archlinux 了，果然还是 linux 环境写比较爽。写了一篇对自己 vcc 的介绍，包括了普通用法以及命令介绍。