读书人

一个Bash Shell 兑现的局域网即时通信

发布时间: 2012-09-07 10:38:15 作者: rapoo

一个Bash Shell 实现的局域网即时通信工具 ^_^

今天有点无聊,打通ssh的时候遇到了问题,搞了半天才搞定。

在搞的过程中发现,在两台经过ssh打通的机器很容易将消息发送到彼此。

进而想想,如果收到消息的机器能够即时将内容显示出来,那不就是一个山寨版的即时聊天工具嘛,哈哈。

?

于是我的恶搞开始了。。。

?

基本思路如下:

?

1. 最核心的其实就是使用ssh执行远程命令,将内容写到远程计算机的文件中。

2. 消息接受机器监控某个消息文件,一旦发现有消息到大,就取出来,并将其写到标准输出,让用户知道。

3. 同时接受消息的机器可以接受用户的输入,并将其发送到另一台机器。

---消息接收器的守护进程需要在后台run,接受用户输入,并发送的进程在前台run。

?

思路确定后就是实施了,我们需要:

?

1. 一个总的程序入口,我们叫它“process.sh”。负责启动消息接收进程和接收用户输入并调用发送逻辑,将数据发送。

2. 一个消息接收器,我们叫它“receive.sh”。负责接收消息,并将告诉用户这条消息是别人发送过来的。

3. 一个消息发送器,我们叫它“send.sh”。负责将用户输入的消息,发送到指定的机器上去。

4. 一个消息接收文件,这个文件存放每次会话中所有接收到的消息。

?

结构如下:

?

?

-rw-rw-r-- 1 admin admin ?12 Nov 22 16:19 msg

-rwxrwxr-x 1 admin admin 442 Nov 22 16:09 process.sh

-rwxrwxr-x 1 admin admin ?56 Nov 11 23:02 receive.sh

-rwxrwxr-x 1 admin admin ?75 Nov 22 12:57 send.sh

?

代码如下:

process.sh:

?

?

receive.sh

?

?

图2:

一个Bash Shell 兑现的局域网即时通信工具 ^

读书人网 >编程

热点推荐