V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiangpeng
V2EX  ›  Python

新手求教,利用socket实现聊天的小问题,代码如下。这样只能实现”你一句我一句“的聊天,怎么样才能让某一方可以发送两天甚至更多信息?(另关于线程我不是很会弄)先谢过了。

  •  
  •   xiangpeng · 2012-06-18 15:22:28 +08:00 · 3606 次点击
    这是一个创建于 4545 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器代码
    # -*- coding: gb2312 -*-
    import socket,time,threading

    class server():
    #socket初始建立连接 监听 等待客户端连接
    s=socket.socket()
    host=socket.gethostname()
    port=3432
    buf=1024
    s.bind((host,port))
    s.listen(5)
    c,addr=s.accept()
    #数据发送函数,通过此函数将用户输入的数据
    #发送到客户端,并且加入时间后输出到自己屏幕上
    def sendMage(self):
    message=raw_input("")
    thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
    print(thetime)
    print("You Said:")
    print(message)
    self.c.send(message)
    #数据接收函数,用于接收用户发送过来的数据
    #并且加入时间后显示
    def recvMage(self):
    self.getMage=self.c.recv(self.buf)
    thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
    print(thetime)
    print("Your Frind Said:")
    print(self.getMage)
    while True:
    newserver=server()
    newserver.recvMage()
    newserver.sendMage()
    客户端代码
    # -*- coding: gb2312 -*-
    import socket,time,threading

    class client():
    #初始化建立和服务器端的连接
    s=socket.socket()
    host=socket.gethostname()
    port=3432
    buf=1024
    s.connect((host,port))
    #数据接收函数,接收服务器发送的数据
    #加入时间后输出到屏幕
    def recvMage(self):
    self.getMage=self.s.recv(self.buf)
    thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
    print("Your Friend Said:")
    print(self.getMage)
    #数据发送函数,用于发送用户输入的数据,
    #并且加入时间后显示到自己的屏幕上
    def sendMage(self):
    message=raw_input("")
    thetime=time.strftime('%H:%M:%S',time.localtime(time.time()))
    print(thetime)
    print("You Said:")
    print(message)
    self.s.send(message)
    while True:
    newclient=client()
    newclient.sendMage()
    newclient.recvMage()
    4 条回复    1970-01-01 08:00:00 +08:00
    bhuztez
        1
    bhuztez  
       2012-06-18 15:29:05 +08:00
    select
    xiangpeng
        2
    xiangpeng  
    OP
       2012-06-18 15:56:27 +08:00
    @bhuztez 能说清楚点吗?我不是很懂,谢谢。
    DeeCheung
        3
    DeeCheung  
       2012-06-18 16:09:11 +08:00
    试试 zeromq 吧 示例也不少。
    dreasky
        4
    dreasky  
       2012-06-18 16:36:12 +08:00
    异步socket
    关键词:
    select
    WSAAsyncSelect
    WSAEventSelect
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1152 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.