V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Orzzzz
V2EX  ›  问与答

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

  •  
  •   Orzzzz · 2015-07-03 01:52:26 +08:00 · 1799 次点击
    这是一个创建于 3426 天前的主题,其中的信息可能已经有所发展或是发生改变。

    计算机网络的作业,要求写一个聊天软件,不限制语言,也没说是几个人聊,不会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干不了这个活也请大牛指出来,断了我这条心思,谢谢!

    4 条回复    2015-07-03 22:30:03 +08:00
    Septembers
        1
    Septembers  
       2015-07-03 02:18:16 +08:00
    des
        2
    des  
       2015-07-03 07:06:50 +08:00
    用 ncat -c 或者 ncat -e
    Orzzzz
        3
    Orzzzz  
    OP
       2015-07-03 17:00:33 +08:00
    @des 怎样用ncat读取文件并发送出去呢?求指教!
    Orzzzz
        4
    Orzzzz  
    OP
       2015-07-03 22:30:03 +08:00
    user@server$ ncat -lk --chat
    user@client$ ncat server_ip

    太年轻- -
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3457 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:28 · PVG 19:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.