免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: untrod
打印 上一主题 下一主题

有没有兴趣大家一起来做个聊天的系统 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-06-30 15:58 |只看该作者
微线程确实厉害,我的PC机运行线程到512就当了,微线程到100万还可以运行,就是慢点

论坛徽章:
0
22 [报告]
发表于 2008-06-30 15:59 |只看该作者
可以考虑使用微线程,哈,一台LINUX支持到20万应该没问题

论坛徽章:
0
23 [报告]
发表于 2008-06-30 17:19 |只看该作者
还没测试SOCKET,只是目前只是能支持并发100万线程。最多占用内存600m,cpu 100%

论坛徽章:
0
24 [报告]
发表于 2008-06-30 18:28 |只看该作者
原帖由 untrod 于 2008-6-27 17:38 发表
很简单的群聊,可以加上如下功能
1)修改昵称
2)私聊
3)查看列表
4)剔除某人
后台加上数据存储的话就可以实现
5)加删好友
6)保存聊天记录

...


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

论坛徽章:
0
25 [报告]
发表于 2008-06-30 21:25 |只看该作者
原帖由 chrisyan 于 2008-6-30 18:28 发表


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



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

把服务器地址改成61.129.51.204 端口4657就好,可以聊了

论坛徽章:
0
26 [报告]
发表于 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()

论坛徽章:
0
27 [报告]
发表于 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()

论坛徽章:
0
28 [报告]
发表于 2008-06-30 21:48 |只看该作者
界面

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

未命名-2.gif

论坛徽章:
0
29 [报告]
发表于 2008-06-30 23:07 |只看该作者
建个svn吧,server和client都放出来,大家一人领一个模块开始写啊

论坛徽章:
0
30 [报告]
发表于 2008-07-01 02:11 |只看该作者
建个群吧。加我。 8925683
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP