推荐学习书目
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 · 4145 views
    This topic created in 5101 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   ·   Solana   ·   2846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 04:25 · PVG 12:25 · LAX 21:25 · JFK 00:25
    ♥ Do have faith in what you're doing.