Chinaunix

标题: 有没有兴趣大家一起来做个聊天的系统 [打印本页]

作者: untrod    时间: 2008-06-25 17:44
标题: 有没有兴趣大家一起来做个聊天的系统
初步设想,做个最简单的先,弄很多人进来,大家一起聊,也可以私聊。
服务器端用PYTHON,客户端的话就随便。FLASH,flex,C++,C,PERL支持SOCKET的都行。
服务器端前端时间给公司弄了个支持至少5万人(已经测试,只连接)不包含广播和点播。
大家有没有兴趣,开源不开源都行~
有兴趣的顶
作者: satoru    时间: 2008-06-25 17:55
tell me more about this , my msn: stcaster (at) hotmail.com
作者: vuleetu    时间: 2008-06-25 18:37
原帖由 untrod 于 2008-6-25 17:44 发表
初步设想,做个最简单的先,弄很多人进来,大家一起聊,也可以私聊。
服务器端用PYTHON,客户端的话就随便。FLASH,flex,C++,C,PERL支持SOCKET的都行。
服务器端前端时间给公司弄了个支持至少5万人(已经测试 ...


我在想,你这个测试是并发的吗?同时5万人连接,如果用socket来处理的话,肯定会死掉的,如果采用微线程倒是可以的,我在自己的机器上测试过微线程的威力,呵呵
作者: untrod    时间: 2008-06-25 23:40
不好意思,并发,SKT,使用服务器,仅连接,加我SKYPE ixafei
作者: pythonor    时间: 2008-06-26 08:04
有兴趣,加我QQ
277941355
作者: gaochang2008    时间: 2008-06-26 10:26
标题: 回复 #1 untrod 的帖子
我最近也有这个想法(把音频视频也集成进去) 有兴趣 加我 27340277
作者: guijia8427    时间: 2008-06-26 10:40
网络方面的很差劲 只有看得份了
作者: untrod    时间: 2008-06-26 10:43
原帖由 gaochang2008 于 2008-6-26 10:26 发表
我最近也有这个想法(把音频视频也集成进去) 有兴趣 加我 27340277


还是先做最基本的TXT chat吧,音频视频的东西慢慢来
作者: gaochang2008    时间: 2008-06-26 10:46
标题: 回复 #8 untrod 的帖子
到底作不做亚??
作者: untrod    时间: 2008-06-26 12:26
原帖由 gaochang2008 于 2008-6-26 10:46 发表
到底作不做亚??


看看人够不

音频视频你打算怎么做?
作者: vuleetu    时间: 2008-06-26 13:24
算我一个
作者: untrod    时间: 2008-06-26 13:27
:wink:
作者: untrod    时间: 2008-06-27 12:09
没人来?服务器端弄好了,谁来写个客户端呢,WXPYTHON,或者FLASH都好啊
作者: untrod    时间: 2008-06-27 17:21
运行这个客户端试试

testor.rar

727 Bytes, 下载次数: 105


作者: untrod    时间: 2008-06-27 17:38
很简单的群聊,可以加上如下功能
1)修改昵称
2)私聊
3)查看列表
4)剔除某人
后台加上数据存储的话就可以实现
5)加删好友
6)保存聊天记录

...
作者: chrisyan    时间: 2008-06-30 11:30
这个东西应该用twisted,
先写个需求吧
作者: appletian520    时间: 2008-06-30 12:02
太有建设性了。
强烈支持!
作者: untrod    时间: 2008-06-30 15:12
原帖由 chrisyan 于 2008-6-30 11:30 发表
这个东西应该用twisted,
先写个需求吧


需求已经做过了

需要有能力和意向的兄弟持续开发

问下,有那位兄弟可以提高服务器支持。LINUX,FREEBSD,安装好PYTHON环境,只占用不超过10M的内存不超过1M的空间

[ 本帖最后由 untrod 于 2008-6-30 15:15 编辑 ]
作者: untrod    时间: 2008-06-30 15:15
和我联系ixafei at 139.com
作者: untrod    时间: 2008-06-30 15:58
微线程确实厉害,我的PC机运行线程到512就当了,微线程到100万还可以运行,就是慢点
作者: untrod    时间: 2008-06-30 15:59
可以考虑使用微线程,哈,一台LINUX支持到20万应该没问题
作者: untrod    时间: 2008-06-30 17:19
还没测试SOCKET,只是目前只是能支持并发100万线程。最多占用内存600m,cpu 100%
作者: chrisyan    时间: 2008-06-30 18:28
原帖由 untrod 于 2008-6-27 17:38 发表
很简单的群聊,可以加上如下功能
1)修改昵称
2)私聊
3)查看列表
4)剔除某人
后台加上数据存储的话就可以实现
5)加删好友
6)保存聊天记录

...


不是这个就是需求吧?要稍微详细一点啊
我看了你写的代码,我觉得还是用twisted比较好,搭一个最基本的框架二三十行一个server就出来了,UI倾向于使用wxpython,这个东西也很容易集成到twisted中(client也用twisted来开发)
根据需求我们开发一个协议,然后一步步的实现
作者: untrod    时间: 2008-06-30 21:25
原帖由 chrisyan 于 2008-6-30 18:28 发表


不是这个就是需求吧?要稍微详细一点啊
我看了你写的代码,我觉得还是用twisted比较好,搭一个最基本的框架二三十行一个server就出来了,UI倾向于使用wxpython,这个东西也很容易集成到twisted中(client也用 ...



这是功能需求。
服务器很稳定,服务器端使用的的是TWISTED
至于客户端使用什么,我们开放协议就好

把服务器地址改成61.129.51.204 端口4657就好,可以聊了
作者: untrod    时间: 2008-06-30 21:29
客户端
#!/usr/bin/env python
#coding=utf-8
import cmd
import sys
import socket,time,random
import thread


HOST = '61.129.51.204'   
PORT = 4657              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
print "lease Enter Your NickName:"
nickname=raw_input()
print "Your Nickname is:%s"%nickname
s.send('<main_action>setNickName</main_action><nickname>%s</nickname>'%nickname)

class UI(cmd.Cmd):
                Last_mail_file = ""
                def __init__(self):
                                cmd.Cmd.__init__(self)
                                self.do_hello(self)
                                self.prompt = ''

                def do_hello(self, arg):
                                print "********************************************"
                                print "Client"
                                print "********************************************"

                def do_quit(self, arg):
                                print "byebye"
                                sys.exit(1)

                def do_exit(self, arg):
                                print "byebye"
                                sys.exit(1)

                def default(self, line):
                                #print "You Said:",line
                                info="<main_action>sendMsg</main_action><nickname>%s</nickname><msg>%s</msg>"%(nickname,line)
                                s.send(info)

                def do_C2S(self,arg):
                                print arg


class CSC(UI):
        def __init__(self):
                pass
        def run(self,a):
                while 1:
                        data = s.recv(204
                        if len(data)>1:
                                self.do_C2S(data)



def main():
                a = UI()
                c=CSC()
                thread.start_new(c.run,(1,))
                a.cmdloop()

if __name__ == '__main__':
                main()
作者: untrod    时间: 2008-06-30 21:33
#!/usr/bin/env python
#coding=utf-8
import cmd
import sys
import socket,time,random
import thread


HOST = '61.129.51.204'   
PORT = 4657              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
print "Please Enter Your NickName:"
nickname=raw_input()
print "Your Nickname is:%s"%nickname
s.send('<main_action>setNickName</main_action><nickname>%s</nickname>'%nickname)

class UI(cmd.Cmd):
                Last_mail_file = ""
                def __init__(self):
                                cmd.Cmd.__init__(self)
                                self.do_hello(self)
                                self.prompt = ''

                def do_hello(self, arg):
                                print "********************************************"
                                print "Client"
                                print "********************************************"

                def do_quit(self, arg):
                                print "byebye"
                                sys.exit(1)

                def do_exit(self, arg):
                                print "byebye"
                                sys.exit(1)

                def default(self, line):
                                #print "You Said:",line
                                info="<main_action>sendMsg</main_action><nickname>%s</nickname><msg>%s</msg>"%(nickname,line)
                                s.send(info)

                def do_C2S(self,arg):
                                print arg


class CSC(UI):
        def __init__(self):
                pass
        def run(self,a):
                while 1:
                        data = s.recv(2048)
                        if len(data)>1:
                                self.do_C2S(data)



def main():
                a = UI()
                c=CSC()
                thread.start_new(c.run,(1,))
                a.cmdloop()

if __name__ == '__main__':
                main()
作者: untrod    时间: 2008-06-30 21:48
界面

未命名-2.gif (78.91 KB, 下载次数: 93)

未命名-2.gif

作者: chrisyan    时间: 2008-06-30 23:07
建个svn吧,server和client都放出来,大家一人领一个模块开始写啊
作者: kfdcw    时间: 2008-07-01 02:11
建个群吧。加我。 8925683
作者: hiwoody    时间: 2008-07-01 13:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: untrod    时间: 2008-07-01 14:14
哈,大家积极性很高啊
作者: h2oo2    时间: 2008-07-01 14:47
俺积极要求加入~暑假有得玩了
qq-71919038
作者: untrod    时间: 2008-07-01 17:59
没有客户端的人来支持?
客户端最好用FLASH吧,TK或者WXPYTHON不通用,估计人也多不起来,没啥意思
作者: chrisyan    时间: 2008-07-01 18:47
flash?
我们这个是用来练手的,不用先考虑谁用,还是python吧
作者: untrod    时间: 2008-07-01 21:21
...
作者: untrod    时间: 2008-07-02 16:56
项目地址:http://code.google.com/p/pplinker/
过段时间我会附上文档。
项目中的优化P2P搜索算法将会是我的毕业论文的核心部分~
欢迎加入一起开发。
联系我:qq:93758302
作者: vuleetu    时间: 2008-07-03 09:43
原帖由 untrod 于 2008-7-2 16:56 发表
项目地址:http://code.google.com/p/pplinker/
过段时间我会附上文档。
项目中的优化P2P搜索算法将会是我的毕业论文的核心部分~
欢迎加入一起开发。
联系我:qq:93758302



加你了,等待审核中
作者: untrod    时间: 2008-07-03 11:02
我只能晚上上QQ
作者: forlorngenius    时间: 2008-07-03 11:27
绝对有兴趣
作者: untrod    时间: 2008-07-03 13:34
欢迎
作者: sy3ying    时间: 2008-07-04 10:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 可可熊    时间: 2008-07-04 13:35
算俺一个
作者: tigerajs    时间: 2008-07-04 14:09
标题: 回复 #1 untrod 的帖子
support
作者: jetking    时间: 2008-07-05 11:16
支持楼主,我是超级新手,对python感兴趣
作者: 青野志狼    时间: 2008-07-07 18:24
支持
作者: 圣域天子    时间: 2008-07-09 16:41
在网上混几十年了, 第一次看到在国内有人对一起做个软件有这么高的兴趣, 不得了, 不得了, 真不得了.
我刚在看Python, 还没入门, 过几十天试试搞个客户端支持大家.
作者: untrod    时间: 2008-07-10 12:36
服务器已经好了,就等你的客户端了
作者: lovxj    时间: 2008-07-16 17:47
刚学python,想观摩一下子,估计帮不上什么忙。。
可以放出现在的服务器端么?学习学习
cadmuxe@gmail.com
作者: yuanyuan025    时间: 2008-07-17 15:05
多人去啊
作者: 2gua    时间: 2008-07-17 16:33

有点儿意思啦。
作者: kfdcw    时间: 2008-07-18 00:46
好,做好了我拿来卖钱钱。。。
作者: kfdcw    时间: 2008-07-18 00:50
没有我的参与,估计半年不会有什么进展。。。
作者: alan_yang    时间: 2008-07-18 16:43
Flex的客户端



main.mxml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" backgroundColor="#AAAAAA">
  3.         <mx:Panel layout="absolute" left="10" right="10" top="10" bottom="10">
  4.                 <mx:TextArea id="mainText" top="10" left="10" right="10" bottom="40"/>
  5.                 <mx:TextInput id="msg" left="10" right="72" bottom="10"/>
  6.                 <mx:Button id="sendBtn" label="Send" right="10" bottom="10"/>
  7.         </mx:Panel>
  8.         <!--mx:Style source="assets/style.css" /-->
  9.         <mx:Script>
  10.                 <![CDATA[
  11.                 import flash.net.*;
  12.                 import mx.managers.PopUpManager;
  13.                 private const PORT:int = 4657;
  14.                 private const HOST:String = "61.129.51.204";
  15.                 private var svrMsg:String = "";
  16.                 private var clientSocket:Socket = new Socket;
  17.                 private var loginPanel:Login = new Login;
  18.                 private function init():void
  19.                 {
  20.                         this.msg.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
  21.                         this.sendBtn.addEventListener(MouseEvent.CLICK,onSend);
  22.                         this.clientSocket.addEventListener(Event.CONNECT,onConnect);
  23.                         this.clientSocket.addEventListener(Event.CLOSE,onClose);
  24.                         this.clientSocket.addEventListener(ProgressEvent.SOCKET_DATA,onData);
  25.                         PopUpManager.addPopUp(loginPanel,this,true);
  26.                         PopUpManager.centerPopUp(loginPanel);
  27.                         connectToServer();       
  28.                 }
  29.                 private function connectToServer():void
  30.                 {
  31.                         try{
  32.                                 this.clientSocket.connect(HOST,PORT);
  33.                         }catch(e:Error){
  34.                                 return;
  35.                                 //this.nativeApplication.exit(0);
  36.                         }
  37.                         this.clientSocket.writeMultiByte("<main_action>setNickName</main_action><nickname>"+loginPanel.nickName+"</nickname>","gb2312");
  38.                         this.clientSocket.flush();
  39.                 }
  40.                 private function onConnect(e:Event):void
  41.                 {
  42.                         svrMsg+="connect to server! \n";
  43.                         updateMsg();
  44.                 }
  45.                 private function onClose(e:Event):void
  46.                 {
  47.                         svrMsg+="connect close! \n";
  48.                         updateMsg();
  49.                 }
  50.                 private function onData(e:ProgressEvent):void
  51.                 {
  52.                         svrMsg+=this.clientSocket.readMultiByte(this.clientSocket.bytesAvailable,"gb2312")+"\n";
  53.                         updateMsg();
  54.                 }
  55.                 private function onSend(e:MouseEvent):void
  56.                 {
  57.                         send();
  58.                 }
  59.                 private function onKeyDown(e:KeyboardEvent):void
  60.                 {
  61.                         if(13==e.charCode)
  62.                         {
  63.                                 send();
  64.                         }
  65.                 }
  66.                 private function send():void
  67.                 {
  68.                         var temp:String = "<main_action>sendMsg</main_action><nickname>Alan</nickname><msg>"+this.msg.text+"</msg>"
  69.                        
  70.                         this.clientSocket.writeMultiByte(temp,"gb2312");
  71.                         this.clientSocket.flush();
  72.                         this.msg.text = "";
  73.                 }
  74.                 private function updateMsg():void
  75.                 {
  76.                         mainText.text = svrMsg;
  77.                 }
  78.                 ]]>
  79.         </mx:Script>
  80. </mx:Application>

复制代码


Login.mxml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="270" height="84" title="Input your name">
  3.         <mx:TextInput id="txt" x="10" y="12" keyDown="if(13==event.charCode)onClick();"/>
  4.         <mx:Button x="178" y="12" label="Button" click="onClick()"/>
  5.         <mx:Script>
  6.                 <![CDATA[
  7.                 import mx.managers.PopUpManager;
  8.                 public var nickName:String = "";
  9.                 private function onClick():void
  10.                 {
  11.                         PopUpManager.removePopUp(this);
  12.                         name = txt.text;
  13.                 }
  14.                 ]]>
  15.         </mx:Script>       
  16. </mx:TitleWindow>
复制代码



client.zip

276.51 KB, 下载次数: 54

源码和程序


作者: alan_yang    时间: 2008-07-18 16:51
服务器没放跨域策略文件,网页上用这个会被安全沙箱挡住....大家想用还是下到本机用吧

http://kid.moker.com/img/Client.swf

[ 本帖最后由 alan_yang 于 2008-7-18 17:20 编辑 ]
作者: untrod    时间: 2008-07-24 17:09
等,我加一个跨域文件吧
作者: aol365    时间: 2008-07-25 12:54
标题: 回复 #19 untrod 的帖子
服务器支持我可以提供的 机器配置还不错的:)不过貌似不能24小时开放 可以么?
作者: aol365    时间: 2008-07-25 12:55
有个可以24小时开放的 但是配置又不怎么好 只有512m的内存
作者: untrod    时间: 2008-07-25 13:56
我有服务器,现在就是24小时开放
作者: gambia    时间: 2008-07-25 15:06
看来真是人多力量大啊,新手关注中~
作者: untrod    时间: 2008-07-25 17:29
希望客户端高手加入啊
作者: wmjie    时间: 2008-08-06 13:44
能提供服务端的程序吗?
mini的也成,不能 24 小时在线啊.
最好可以在自己的机器上测试~~~
作者: wmjie    时间: 2008-08-06 13:47
已经无法连接服务器了吗??
作者: untrod    时间: 2008-08-12 11:43
可以连接,等我打包成EXE给你吧
作者: 9119111    时间: 2008-08-12 14:02
你把需求分析列出来。标准啊什么的先
作者: 9119111    时间: 2008-08-12 14:10
如果做的话。源码都加好注释啊。
让我们初学者观摩观摩
作者: jjbin    时间: 2008-08-12 15:08
支持,可以上载到开源社区
作者: 9119111    时间: 2008-08-12 15:10
嗯。。。google code里好多这样的
作者: sunorr    时间: 2008-08-12 18:41
学习python,我也参加!哈哈

sunorr@live.cn我的msn
作者: 9119111    时间: 2008-08-12 19:41
但不知要什么时候能成行了.. 看这样子
作者: smz0102    时间: 2008-08-13 14:05
我可以提供服务器!电信机房,可以跟我联系  qq:63700038
作者: 9119111    时间: 2008-08-13 14:13
原帖由 smz0102 于 2008-8-13 14:05 发表
我可以提供服务器!电信机房,可以跟我联系  qq:63700038


免费的吗??
作者: rainmoist    时间: 2008-08-13 22:59
建议开源啊,让我们这些新手学习学习

如果不开源,详细的讲解一下怎么实现的高并发,用到了那些东西啊

也能不能给我一份打包的EXE,或源代码呢,嘿嘿

rainmoist@qq.com

谢谢
作者: 9119111    时间: 2008-08-14 08:47
原帖由 rainmoist 于 2008-8-13 22:59 发表
建议开源啊,让我们这些新手学习学习

如果不开源,详细的讲解一下怎么实现的高并发,用到了那些东西啊

也能不能给我一份打包的EXE,或源代码呢,嘿嘿

rainmoist@qq.com

谢谢


做都还没开始 做呢。你就这么急。
作者: wxws2002    时间: 2008-08-14 09:10
服务器用什么协议,sip?
作者: wxws2002    时间: 2008-08-14 09:11
底层的文件传输用什么协议?MSRP,RTP,RTCP
作者: 9119111    时间: 2008-08-14 09:21
协议  这些都没定啊。
最好谁先把开发文档写出来先。
统一好。再分配
作者: aol365    时间: 2008-08-16 20:41
看到一次顶一次啊 哈哈 这本书真不错 也感谢宋的出版 去看了社区翻译的 毕竟还有有点论 不过宋做的也太破坏foss气愤了
作者: wmjie    时间: 2008-08-18 10:21
支持~~~~
作者: smz0102    时间: 2008-08-18 10:46
标题: 回复 #72 9119111 的帖子
是的,免费
我是想参与啊!哈哈
对了,这个做到什么程度了
别只打雷不下雨啊,要做就马上行动
全力支持

[ 本帖最后由 smz0102 于 2008-8-18 10:48 编辑 ]
作者: lastexile    时间: 2008-08-19 03:23
我也在cu这里和网上找到两个python聊天室的简陋代码,放在我的blog里
http://www.lpfrx.com/archives/140/
作者: wlkcrq    时间: 2008-08-20 11:24
唉,我来看看!
作者: diyself    时间: 2008-08-21 11:29
还在继续吗?
作者: lastexile    时间: 2008-08-27 17:00
楼主,现在进展得怎样啊
作者: alan_yang    时间: 2008-08-29 16:14
估计是黄了
作者: wmjie    时间: 2008-09-09 13:35
顶上去~~~
作者: pycu    时间: 2008-11-26 13:14
337973922算我一个
作者: jiangnanandi    时间: 2008-11-26 13:39
楼主如果项目继续的话,请加我,我想参加。谢谢
MSN:jiangnanandi@hotmail.com
作者: 圣域天子    时间: 2009-02-03 12:58
原帖由 smz0102 于 2008-8-13 14:05 发表
我可以提供服务器!电信机房,可以跟我联系  qq:63700038


目前进展如何啊???
作者: cxt442    时间: 2009-02-04 19:09
大家都很关注,到底怎么样了,开始做了吗
作者: xichen    时间: 2009-02-04 20:21
半年以前的老帖了
作者: luo118    时间: 2009-02-05 14:16
路過看看
作者: zhenglxd    时间: 2009-02-05 14:20
标题:
新人看不懂 瞎起哄下
作者: wmjie    时间: 2009-07-07 14:19
飘过~~~~~
作者: harley_xia    时间: 2012-10-25 17:32
这个你们做了吗?
作者: linux_c_py_php    时间: 2012-10-25 18:35
跑个XMPP就行了, 不用自己做.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2