# Poco::Net

# class RawSocket

Library: Net
Package: Sockets
Header: Poco/Net/RawSocket.h

## Description

This class provides an interface to a raw IP socket.

## Inheritance

Direct Base Classes: Socket

All Base Classes: Socket

## Member Summary

Member Functions: bind, connect, getBroadcast, operator =, receiveBytes, receiveFrom, sendBytes, sendTo, setBroadcast

Inherited Functions: address, available, close, getBlocking, getKeepAlive, getLinger, getNoDelay, getOOBInline, getOption, getReceiveBufferSize, getReceiveTimeout, getReuseAddress, getReusePort, getSendBufferSize, getSendTimeout, impl, init, operator !=, operator <, operator <=, operator =, operator ==, operator >, operator >=, peerAddress, poll, secure, select, setBlocking, setKeepAlive, setLinger, setNoDelay, setOOBInline, setOption, setReceiveBufferSize, setReceiveTimeout, setReuseAddress, setReusePort, setSendBufferSize, setSendTimeout, sockfd, supportsIPv4, supportsIPv6

## Constructors

### RawSocket

RawSocket();

Creates an unconnected IPv4 raw socket.

### RawSocket

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

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

Creates an unconnected raw socket.

The socket will be created for the given address family.

### RawSocket

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

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.

## Destructor

### ~RawSocket

~RawSocket();

Destroys the RawSocket.

## Member Functions

### 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().

### connect

void connect(
const SocketAddress & address
);

Restricts incoming and outgoing packets to the specified address.

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

### getBroadcast

bool getBroadcast() const;

Returns the value of the SO_BROADCAST socket option.

### operator =

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.

### receiveBytes

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.

### receiveFrom

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.

### sendBytes

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.

### sendTo

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.

### setBroadcast

void setBroadcast(
bool flag
);

Sets the value of the SO_BROADCAST socket option.

Setting this flag allows sending datagrams to the broadcast address.