implement __cinit__, shutdown, close, __dealloc__ for socket, and also add a try-except to not leak client sock from accept()
"""
Sockect Object/API
"""
ctypedef int socket_t
cdef class socket :
"""
Represents a single OS-level socket
>>> from qmsk.net.socket import addr
>>> from qmsk.net.socket.constants import *
>>> s = socket(1337)
Traceback (most recent call last):
...
OSError: [Errno 97] Address family not supported by protocol
>>> s = socket(fd=1337)
>>> s.send('foo')
Traceback (most recent call last):
...
OSError: [Errno 9] Bad file descriptor
>>> s = socket(AF_INET, SOCK_STREAM)
>>> s.bind(addr.sockaddr_in('127.0.0.1', 1337))
>>> s.listen(1)
>>> s.listen(0)
>>> s = socket()
>>> s.connect(addr.sockaddr_in('127.0.0.1', 1338))
Traceback (most recent call last):
...
OSError: [Errno 111] Connection refused
"""
cdef readonly socket_t fd