推荐学习书目
› 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 · Jun 18, 2012 · 4489 views
    This topic created in 5249 days ago, the information mentioned may be changed or developed.
    服务器代码
    # -*- 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 replies  •  1970-01-01 08:00:00 +08:00
    bhuztez
        1
    bhuztez  
       Jun 18, 2012
    select
    xiangpeng
        2
    xiangpeng  
    OP
       Jun 18, 2012
    @bhuztez 能说清楚点吗?我不是很懂,谢谢。
    DeeCheung
        3
    DeeCheung  
       Jun 18, 2012
    试试 zeromq 吧 示例也不少。
    dreasky
        4
    dreasky  
       Jun 18, 2012
    异步socket
    关键词:
    select
    WSAAsyncSelect
    WSAEventSelect
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:50 · PVG 15:50 · LAX 00:50 · JFK 02:50
    ♥ Do have faith in what you're doing.