Example #1
0
 def _get_socket(self):
     if self._check_dead():
         return None
     if self.socket:
         return self.socket
     s = Socket(self.family, socket.SOCK_STREAM)
     if hasattr(s, 'settimeout'): 
         s.settimeout(self._SOCKET_TIMEOUT)
     try:
         s.connect(self.address)
     except socket.timeout, msg:
         self.mark_dead("connect: %s" % msg)
         return None
def server(port):
    print 'Server starting port: %s' % port
    sock = Socket(AF_INET, SOCK_STREAM)
    sock.bind(('', port))
    sock.listen(10)
    try:
        while True:
#            yield ReadWait(sock)
#            client, addr = sock.accept()
            client, addr = yield sock.accept()
            clients.append(client)
            yield NewTask(handle_client(client, addr))
    finally:
        sock.close()
Example #3
0
 def listen(self, port, address=""):
     assert not self._socket
     self._socket = Socket()
     if os.name != 'nt':
         # Make a file descriptor close-on-exec.
         import fcntl
         flags = fcntl.fcntl(self._socket.fileno(), fcntl.F_GETFD)
         flags |= fcntl.FD_CLOEXEC
         fcntl.fcntl(self._socket.fileno(), fcntl.F_SETFD, flags)
     # reuse address
     self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
     # set non blocking
     self._socket.setblocking(0)
     
     self._socket.bind((address, port))
     self._socket.listen(65535)
Example #4
0
class HTTPServer(object):
    """HTTP server."""
    def __init__(self, handle_target, no_keep_alive=False, xheaders=False, ssl_options=None):
        self.handle_target = handle_target
        self.no_keep_alive = no_keep_alive
        self.xheaders = xheaders
        self.ssl_options = ssl_options
        self._socket = None

    def listen(self, port, address=""):
        assert not self._socket
        self._socket = Socket()
        if os.name != 'nt':
            # Make a file descriptor close-on-exec.
            import fcntl
            flags = fcntl.fcntl(self._socket.fileno(), fcntl.F_GETFD)
            flags |= fcntl.FD_CLOEXEC
            fcntl.fcntl(self._socket.fileno(), fcntl.F_SETFD, flags)
        # reuse address
        self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
        # set non blocking
        self._socket.setblocking(0)
        
        self._socket.bind((address, port))
        self._socket.listen(65535)

    def start(self):
        while True:
            try:
                connection, address = yield self._socket.accept()
            except socket.error, e:
                if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN): # omit Operation would block and Try again error
                    return
                raise
            # print 'new', connection, address, connection.fileno()
            yield NewTask(HTTPConnection(connection, address, self.handle_target, 
                                         xheaders=self.xheaders).handler(), 'httphandler')