Beispiel #1
0
    def __init__(self, mode):
        print("mode: " + mode)

        if mode == 'poll':
            self.sel = selectors.PollSelector()
        elif mode == 'epoll':
            self.sel = selectors.EpollSelector()
        else:
            self.sel = selectors.SelectSelector()
Beispiel #2
0
 def __init__(self, host, port, messageque: MessageQue, handlerClass):
     self.lstn_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.lstn_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     self.lstn_sock.bind((host, port))
     self.lstn_sock.setblocking(False)
     self.enabled = True
     self.sel = selectors.EpollSelector()
     self.lstn_sock.listen(5)
     self.handlerClass = handlerClass
     self.messageque = messageque
     print("socket {} listening {}:{} ".format(self.lstn_sock, host, port))
Beispiel #3
0
def read_avro():
    ep = selectors.EpollSelector()
    ep.register(sock, selectors.EVENT_READ)

    while True:
        pollrc = ep.select(timeout=int(opts.read_timeout)
                           if int(opts.read_timeout) > 0 else None)
        try:
            buf = sock.recv(4096, socket.MSG_DONTWAIT)
            os.write(sys.stdout.fileno(), buf)
            sys.stdout.flush()
        except Exception:
            break
Beispiel #4
0
def main():
    global admin
    admin = selectors.EpollSelector()

    server = socket.socket()
    server.bind(('127.0.0.1', 9999))
    server.listen(5)

    admin.register(server, selectors.EVENT_READ, accept)
    while True:
        events = admin.select()
        for key, mask in events:
            callback = key.data
            sock = key.fileobj
            callback(sock)
Beispiel #5
0
def _serve(sock):
    selector = selectors.EpollSelector()
    loop = asyncio.SelectorEventLoop(selector)
    asyncio.set_event_loop(loop)
    coro = asyncio.start_server(_handle_connection, sock=sock)
    server = loop.run_until_complete(coro)
    loop.add_signal_handler(signal.SIGTERM, loop.stop)
    loop.add_signal_handler(signal.SIGINT, loop.stop)
    logging.info('Starting server worker at http://{}:{}'.format(
        address, port))
    try:
        loop.run_forever()
    finally:
        logging.info('Closing server worker...')
        server.close()
        coro.close()
        loop.run_until_complete(coro)
Beispiel #6
0
def read_json():
    decoder = json.JSONDecoder()
    rbuf = bytes()
    ep = selectors.EpollSelector()
    ep.register(sock, selectors.EVENT_READ)

    while True:
        pollrc = ep.select(timeout=int(opts.read_timeout)
                           if int(opts.read_timeout) > 0 else None)
        try:
            buf = sock.recv(4096, socket.MSG_DONTWAIT)
            rbuf += buf
            while True:
                rbuf = rbuf.lstrip()
                data = decoder.raw_decode(rbuf.decode('ascii'))
                rbuf = rbuf[data[1]:]
                print(json.dumps(data[0]))
        except ValueError as err:
            sys.stdout.flush()
            pass
        except Exception:
            break
 def create_event_loop(self):
     return asyncio.SelectorEventLoop(selectors.EpollSelector())
Beispiel #8
0
import socket
import selectors

server = socket.socket()
server.bind(("", 8885))

server.listen(10)

epoll_selector = selectors.EpollSelector()


def recv_data(conn):
    data = conn.recv(1024)
    if data:
        print(data.decode())
        conn.send(data)
    else:
        conn.close()
        epoll_selector.unregister(conn)
        print("客户端连接 关闭")


def connection(server):
    conn, addr = server.accept()
    print("用户{}连接".format(addr))
    epoll_selector.register(conn, selectors.EVENT_READ, recv_data)


epoll_selector.register(server, selectors.EVENT_READ, connection)

while True:
Beispiel #9
0
# coding=utf-8
# IO多路复用epoll来显示我们的并发服务器
import socket
import selectors  # IO多路复用选择器的模块

epoll_selector = selectors.EpollSelector()  # 实力化一个和epoll通信的选择器
# epoll_selector = selectors.DefaultSelector()  #根据系统自动选择通信器

server = socket.socket()  # 生成套接字
server.bind(('', 7788))  # 指定端口
server.listen(1000)  # 开启监听


def read(conn):  # 传的对等连接套接字
    recv_data = conn.recv(1024)  # 接收数据
    if recv_data:  # 如果recv_data有数据就执行下面的代码,没有就执行else
        print(recv_data)
        conn.send(recv_data)  # 返回接收的数据
    else:
        epoll_selector.unregister(conn)  # 处理完数据后就不需要再监控了,就关闭监控
        conn.close()


def accept(server):  # 传一个监听套接字
    conn, addr = server.accept()  # 当有连接过来的时候,生成对等连接套接字
    # 接收数据
    epoll_selector.register(conn, selectors.EVENT_READ, read)  # 注册事件,固定格式


epoll_selector.register(
    server, selectors.EVENT_READ,
Beispiel #10
0
import socket
import selectors

epoll_selector = selectors.EpollSelector()  # 如果是windows Def...

server = socket.socket()
server.bind(('', 8888))
server.listen(1000)


def read(conn):
    recv_data = conn.recv(1024)
    if recv_data:
        print(recv_data)
        conn.send(recv_data)

    else:
        epoll_selector.unregister(conn)  # 取消注册
        conn.close()


def accept(server):
    conn, addr = server.accept()
    epoll_selector.register(conn, selectors.EVENT_READ, read)


epoll_selector.register(server, selectors.EVENT_READ, accept)

## 事件循环
while True:
    events = epoll_selector.select()  # 查询准备好的事件,返回列表
import selectors  # 提供IO多路技术
import socket

server = socket.socket()
server.bind(("0.0.0.0", 9998))
server.listen()

epoll = selectors.EpollSelector()  # 生成一个spoll 选择器


# 1.2:写注册调用的函数
def funcbbb(conn):
    data = conn.recv(102)
    if data == b'':
        epoll.unregister(conn)  # 取消注册
        conn.close()
    else:
        print(data)
        conn.send(data)


# 1.1
def funcaaa(ser):
    conn, addr = ser.accept()
    print('处理了连接')
    epoll.register(conn, selectors.EVENT_READ, funcbbb)


# 1.0:调用这个参数申请注册,
# 让他帮我看着这个server(第一个参数)
epoll.register(server, selectors.EVENT_READ, funcaaa)  # 表示有数据过来了,可以读了
Beispiel #12
0
#passed to create socket connection. It listens for data from
#client and upon listening, sends the data back to the client.
#User is displayed stats such as time and number of active connections.

SERVER_IP = sys.argv[1]
PORT = sys.argv[2]

PORT_NUMBER = int(PORT)

parser = argparse.ArgumentParser()
parser.add_argument("IP", help="Type in the server ip")
parser.add_argument("Port", help="Type in the server port")
args = parser.parse_args()

BUF_SIZE = 1024
sel = selectors.EpollSelector()
peers = {}
peers_count = 0


#This function accepts the socket connection incoming from client
#and sets blocking to false. It then runs the read function
def accept(sock, mask):
    conn, addr = sock.accept()
    print('accepted from', addr)
    conn.setblocking(False)
    peers[conn.fileno()] = conn.getpeername()
    sel.register(conn, selectors.EVENT_READ, read)


#This function is invoked by the accept function, receiving incoming data