可不可以用 Bash shell 做一个 C/S 的聊天室?

2015-07-03 01:52:26 +08:00
 Orzzzz

计算机网络的作业,要求写一个聊天软件,不限制语言,也没说是几个人聊,不会python,也不会php,求闲的没事的程序员阁阁帮我指点一下,怎样用bash写一个聊天室~~~
我只会bash shell,所以就想用bash写,我的思路是,用nc这个流弊工具建立socket,进行通讯,然而nc只能一对一的建立连接,所以我就想了个怪招:

Server

#监听/发送数据
{while true
do
    DATA=date +"%D %H:%M:%S"
    nc -lp $PORT
done
} &

发送数据我还不知道要怎么搞,求指教!原来想着是echo $MSG |tee -a $DB |nc -lp $PORT,但是这样的话就不能一直监听某个端口,好尴尬。

Client

echo $MSG | nc $Server_IP $Server_PORT #向服务器发送数据
nc $Server_IP $Server_PORT -w 1 | cat >> msg #从服务器接收数据

这里的问题是,timeout为1的话会有延迟,很不舒服,关于格式化msg我再仔细想想可以解决。

关于认证,我是想着,当Client连接的时候,发送用户名和密码在Server上认证,成功后在Server上随机生成一串字符发给Client,通过这个字符session认证客户端,客户端关闭后session即消失,不可逆。

一个聊天室一个端口号(是不是太搓了T_T)但是我想不出别的方法了QAQ

如果bash干不了这个活也请大牛指出来,断了我这条心思,谢谢!

1794 次点击
所在节点    问与答
4 条回复
Septembers
2015-07-03 02:18:16 +08:00
des
2015-07-03 07:06:50 +08:00
用 ncat -c 或者 ncat -e
Orzzzz
2015-07-03 17:00:33 +08:00
@des 怎样用ncat读取文件并发送出去呢?求指教!
Orzzzz
2015-07-03 22:30:03 +08:00
user@server$ ncat -lk --chat
user@client$ ncat server_ip

太年轻- -

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX