class Poco::Net::RawSocket

Overview

This class provides an interface to a raw IP socket. More…

#include <RawSocket.h>

class RawSocket: public Poco::Net::Socket
{
public:
    // construction

    RawSocket();

    RawSocket(
        IPAddress::Family family,
        int proto = IPPROTO_RAW
        );

    RawSocket(
        const SocketAddress& address,
        bool reuseAddress = false
        );

    RawSocket(const Socket& socket);

    // methods

    RawSocket&
    operator=(const Socket& socket);

    void
    connect(const SocketAddress& address);

    void
    bind(
        const SocketAddress& address,
        bool reuseAddress = false
        );

    int
    sendBytes(
        const void* buffer,
        int length,
        int flags = 0
        );

    int
    receiveBytes(
        void* buffer,
        int length,
        int flags = 0
        );

    int
    sendTo(
        const void* buffer,
        int length,
        const SocketAddress& address,
        int flags = 0
        );

    int
    receiveFrom(
        void* buffer,
        int length,
        SocketAddress& address,
        int flags = 0
        );

    void
    setBroadcast(bool flag);

    bool
    getBroadcast() const;

protected:
    // construction

    RawSocket(SocketImpl* pImpl);
};

Inherited Members

public:
    // typedefs

    typedef std::vector<Socket> SocketList;

    // enums

    enum SelectMode;

    // methods

    Socket&
    operator=(const Socket& socket);

    bool
    operator==(const Socket& socket) const;

    bool
    operator!=(const Socket& socket) const;

    bool
    operator<(const Socket& socket) const;

    bool
    operator<=(const Socket& socket) const;

    bool
    operator>(const Socket& socket) const;

    bool
    operator>=(const Socket& socket) const;

    void
    close();

    bool
    poll(
        const Poco::Timespan& timeout,
        int mode
        ) const;

    int
    available() const;

    void
    setSendBufferSize(int size);

    int
    getSendBufferSize() const;

    void
    setReceiveBufferSize(int size);

    int
    getReceiveBufferSize() const;

    void
    setSendTimeout(const Poco::Timespan& timeout);

    Poco::Timespan
    getSendTimeout() const;

    void
    setReceiveTimeout(const Poco::Timespan& timeout);

    Poco::Timespan
    getReceiveTimeout() const;

    void
    setOption(
        int level,
        int option,
        int value
        );

    void
    setOption(
        int level,
        int option,
        unsigned value
        );

    void
    setOption(
        int level,
        int option,
        unsigned char value
        );

    void
    setOption(
        int level,
        int option,
        const Poco::Timespan& value
        );

    void
    setOption(
        int level,
        int option,
        const IPAddress& value
        );

    void
    getOption(
        int level,
        int option,
        int& value
        ) const;

    void
    getOption(
        int level,
        int option,
        unsigned& value
        ) const;

    void
    getOption(
        int level,
        int option,
        unsigned char& value
        ) const;

    void
    getOption(
        int level,
        int option,
        Poco::Timespan& value
        ) const;

    void
    getOption(
        int level,
        int option,
        IPAddress& value
        ) const;

    void
    setLinger(
        bool on,
        int seconds
        );

    void
    getLinger(
        bool& on,
        int& seconds
        ) const;

    void
    setNoDelay(bool flag);

    bool
    getNoDelay() const;

    void
    setKeepAlive(bool flag);

    bool
    getKeepAlive() const;

    void
    setReuseAddress(bool flag);

    bool
    getReuseAddress() const;

    void
    setReusePort(bool flag);

    bool
    getReusePort() const;

    void
    setOOBInline(bool flag);

    bool
    getOOBInline() const;

    void
    setBlocking(bool flag);

    bool
    getBlocking() const;

    SocketAddress
    address() const;

    SocketAddress
    peerAddress() const;

    SocketImpl*
    impl() const;

    bool
    secure() const;

    void
    init(int af);

    static
    int
    select(
        SocketList& readList,
        SocketList& writeList,
        SocketList& exceptList,
        const Poco::Timespan& timeout
        );

    static
    bool
    supportsIPv4();

    static
    bool
    supportsIPv6();

protected:
    // methods

    poco_socket_t
    sockfd() const;

Detailed Documentation

This class provides an interface to a raw IP socket.

Construction

RawSocket()

Creates an unconnected IPv4 raw socket.

RawSocket(
    IPAddress::Family family,
    int proto = IPPROTO_RAW
    )

Creates an unconnected raw socket.

The socket will be created for the given address family.

RawSocket(
    const SocketAddress& address,
    bool reuseAddress = false
    )

Creates a raw socket and binds it to the given address.

Depending on the address family, the socket will be either an IPv4 or an IPv6 socket.

RawSocket(const Socket& socket)

Creates the RawSocket with the SocketImpl from another socket.

The SocketImpl must be a RawSocketImpl, otherwise an InvalidArgumentException will be thrown.

RawSocket(SocketImpl* pImpl)

Creates the Socket and attaches the given SocketImpl.

The socket takes ownership of the SocketImpl.

The SocketImpl must be a StreamSocketImpl, otherwise an InvalidArgumentException will be thrown.

Methods

RawSocket&
operator=(const Socket& socket)

Assignment operator.

Releases the socket’s SocketImpl and attaches the SocketImpl from the other socket and increments the reference count of the SocketImpl.

void
connect(const SocketAddress& address)

Restricts incoming and outgoing packets to the specified address.

Calls to connect() cannot come before calls to bind().

void
bind(
    const SocketAddress& address,
    bool reuseAddress = false
    )

Bind a local address to the socket.

This is usually only done when establishing a server socket.

If reuseAddress is true, sets the SO_REUSEADDR socket option.

Calls to connect() cannot come before calls to bind().

int
sendBytes(
    const void* buffer,
    int length,
    int flags = 0
    )

Sends the contents of the given buffer through the socket.

Returns the number of bytes sent, which may be less than the number of bytes specified.

int
receiveBytes(
    void* buffer,
    int length,
    int flags = 0
    )

Receives data from the socket and stores it in buffer.

Up to length bytes are received.

Returns the number of bytes received.

int
sendTo(
    const void* buffer,
    int length,
    const SocketAddress& address,
    int flags = 0
    )

Sends the contents of the given buffer through the socket to the given address.

Returns the number of bytes sent, which may be less than the number of bytes specified.

int
receiveFrom(
    void* buffer,
    int length,
    SocketAddress& address,
    int flags = 0
    )

Receives data from the socket and stores it in buffer.

Up to length bytes are received. Stores the address of the sender in address.

Returns the number of bytes received.

void
setBroadcast(bool flag)

Sets the value of the SO_BROADCAST socket option.

Setting this flag allows sending datagrams to the broadcast address.

bool
getBroadcast() const

Returns the value of the SO_BROADCAST socket option.