zoukankan      html  css  js  c++  java
  • 协程在Socket上的应用

    Socket内部实现用的是多线程。

    服务端

    # coding=utf-8
    
    import sys
    import socket
    import time
    import gevent
    from gevent import socket, monkey
    
    monkey.patch_all()
    
    def server(port):
        s = socket.socket()
        s.bind(('0.0.0.0', port))
        s.listen(500)
        while True:
            cli, addr = s.accept()
            gevent.spawn(handle_request, cli)
    
    
    def handle_request(conn):
        try:
            while True:
                data = conn.recv(1024)
                print 'recv:', data
                conn.send(data)
                if not data:
                    conn.shutdown(socket.SHUT_WR)
        except Exception as e:
            print e
        finally:
            conn.close()
    
    
    if __name__ == '__main__':
        server(8001)

    客户端

    # coding=utf-8
    
    import socket
    HOST = 'localhost' PORT = 8001 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) while True: msg = raw_input('>>:') s.sendall(msg) data = s.recv(1024) print 'Received', data s.close()
  • 相关阅读:
    杭电2007
    杭电 2004
    杭电2005
    杭电2001
    杭电 2000
    Section One
    杭电oj 1002
    杭电oj 1001
    JavaScript高级程序设计第14章表单脚本 (学习笔记)
    JavaScript高级程序设计(学习笔记)
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/10633985.html
Copyright © 2011-2022 走看看