qmsk/net/socket/socket.pxd
author Tero Marttila <terom@fixme.fi>
Sun, 23 Aug 2009 22:31:12 +0300
changeset 30 0e0b9bc2c96b
parent 21 19d212c948e0
permissions -rw-r--r--
fix doctests
"""
    Sockect Object/API
"""

ctypedef int socket_t

cdef class socket :
    """
        Represents a single OS-level socket
        
        >>> from qmsk.net.socket import af_inet
        >>> 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(af_inet.sockaddr_in('127.0.0.1', 1337))
        >>> s.listen(1)
        >>> s.listen(0)

        >>> s = socket()
        >>> s.connect(af_inet.sockaddr_in('127.0.0.1', 1338))
        Traceback (most recent call last):
          ...
        OSError: [Errno 111] Connection refused
        

        >>> s1 = socket(AF_INET, SOCK_STREAM); s2 = socket(AF_INET, SOCK_STREAM)
        >>> s1.listen(1);
        >>> s2.connect(s1.getsockname())
        >>> s12, s12_addr = s1.accept()
        >>> s12_addr == s12.getpeername() == s2.getsockname()
        True
        >>> s1.close(); s2.close()

    """

    cdef readonly socket_t fd