Esempio n. 1
0
    def CreateServer(self):
        listen_sock = tincanchat.create_listen_socket(HOST, PORT)
        addr = listen_sock.getsockname()
        print("Listening on {}".format(addr))

        listen_thread = threading.Thread(target=self.handle_Server_Listen,
                                         args=[listen_sock],
                                         daemon=True)
        listen_thread.start()
Esempio n. 2
0
def create_client(sock):
    '''Return an object representing a client'''
    return SimpleNamespace(sock=sock, rest=bytes(), send_queue=deque())


def broadcast_msg(msg):
    '''Add message to all connected clients' queues'''
    data = tincanchat.prep_msg(msg)
    for client in clients.values():
        client.send_queue.append(data)
        poll.register(client.sock, select.POLLOUT)


if __name__ == '__main__':
    listen_sock = tincanchat.create_listen_socket(HOST, PORT)
    poll = select.poll()
    poll.register(listen_sock, select.POLLIN)
    addr = listen_sock.getsockname()
    print("Listening on {}".format(addr))

    # This is the event loop. Loop indefinitely, processing eveents
    # on all sockets when they occur

    while True:
        # Iterate over all socket with events
        for fd, event in poll.poll():
            if event & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
                poll.unregister(fd)
                del clients[fd]
import tincanchat

HOST = tincanchat.HOST
PORT = tincanchat.PORT

def handle_client(sock, addr):
    """ Receive data from the client via sock and echo it back """
    try:
        msg = tincanchat.recv_msg(sock)  # Blocks until received
                                         # complete message
        print('{}: {}'.format(addr, msg))
        tincanchat.send_msg(sock, msg)  # Blocks until sent
    except (ConnectionError, BrokenPipeError):
        print('Socket error')
    finally:
        print('Closed connection to {}'.format(addr))
        sock.close()

if __name__ == '__main__':
    listen_sock = tincanchat.create_listen_socket(HOST, PORT)
    addr = listen_sock.getsockname()
    print('Listening on {}'.format(addr))

    while True:
        client_sock,addr = listen_sock.accept()
        print('Connection from {}'.format(addr))
        handle_client(client_sock, addr)
Esempio n. 4
0
import threading
import tincanchat

host = tincanchat.host
port = tincanchat.port

def handle_client(sock, addr):
    """ Receive one msg and echo it back to client, then close socket"""
    try:
        msg = tincanchat.recv_msg(sock)
        msg = '{}: {}'.format(addr, msg)
        print(msg)
        tincanchat.send_msg(sock, msg)
    except (ConnectionError, BrokenPipeError):
        print('Socket error')
    finally:
        print('Closed connection to {}'.format(addr))
        sock.close()

if __name__ == '__main__':
    listen_sock = tincanchat.create_listen_socket(host, port)
    addr = listen_sock.getsockname()
    print('Listening on {}'.format(addr))

    while True:
        client_sock,addr = listen_sock.accept()
        thread = threading.Thread(target=handle_client, args=[client_sock, addr],
                                  daemon=True)
        thread.start()
        print('Connection from {}'.format(addr))