zoukankan      html  css  js  c++  java
  • selectors模块

    import selectors
    import socket

    sel = selectors.DefaultSelector()


    def accept(sock, mask):
    conn, addr = sock.accept() # Should be ready
    print('accepted', conn, 'from', addr,mask)
    conn.setblocking(False)
    sel.register(conn, selectors.EVENT_READ, read) #新连接注册read回调函数


    def read(conn, mask):
    data = conn.recv(1024) # Should be ready
    if data:
    print('echoing', repr(data), 'to', conn)
    conn.send(data) # Hope it won't block
    else:
    print('closing', conn)
    sel.unregister(conn)
    conn.close()


    sock = socket.socket()
    sock.bind(('localhost', 9999))
    sock.listen(100)
    sock.setblocking(False)
    sel.register(sock, selectors.EVENT_READ, accept)

    while True:
    events = sel.select() #默认阻塞,有活动连接就返回活动的连接列表
    for key, mask in events:
    callback = key.data #accept
    callback(key.fileobj, mask) #key.fileobj= 文件句柄

    #==============================

    import socket
    import sys

    messages = [ b'This is the message. ',
    b'It will be sent ',
    b'in parts.',
    ]
    server_address = ('localhost', 9999)

    # Create a TCP/IP socket
    socks = [ socket.socket(socket.AF_INET, socket.SOCK_STREAM) for i in range(110)]
    print(socks)
    # Connect the socket to the port where the server is listening
    print('connecting to %s port %s' % server_address)
    for s in socks:
    s.connect(server_address)

    for message in messages:

    # Send messages on both sockets
    for s in socks:
    print('%s: sending "%s"' % (s.getsockname(), message) )
    s.send(message)

    # Read responses on both sockets
    for s in socks:
    data = s.recv(1024)
    print( '%s: received "%s"' % (s.getsockname(), data) )
    if not data:
    print( 'closing socket', s.getsockname() )

  • 相关阅读:
    dp uva1025
    dp uva10003
    dp最优矩阵相乘poj1651
    dp uva11584
    动态规划uva11400
    流形学习 (Manifold Learning)
    tf.nn.embedding_lookup
    word2vec
    word2vec 细节解析1
    collections-Counter
  • 原文地址:https://www.cnblogs.com/rongye/p/9985475.html
Copyright © 2011-2022 走看看