www.digitalmars.com [Home] [Search] [D]
Last update Feb 26, 2005

Phobos: std.socket

enum AddressFamily
The communication domain used to resolve an address:

UNIX
local communication
INET
internet protocol version 4
IPX
novell IPX
APPLETALK
appletalk

enum SocketType
Communication semantics:

STREAM
sequenced, reliable, two-way communication-based byte streams
DGRAM
connectionless, unreliable datagrams with a fixed maximum length; data may be lost or arrive out of order
RAW
raw protocol access
RDM
reliably-delivered message datagrams
SEQPACKET
sequenced, reliable, two-way connection-based datagrams with a fixed maximum length

enum ProtocolType
Protocol:

IP
internet protocol
ICMP
internet control message protocol
IGMP
internet group management protocol
GGP
gateway to gateway protocol
TCP
transmission control protocol
PUP
PARC universal packet protocol
UDP
user datagram protocol
IDP
Xerox NS protocol


class AddressException : Exception
Base exception thrown from an Address.

abstract class Address
Address is an abstract class for representing a network addresses.

AddressFamily addressFamily()
Family of this address.

char[] toString()
Human readable string representing this address.

class InternetAddress : Address
InternetAddress is a class that represents an IPv4 (internet protocol version 4) address and port.

const uint ADDR_ANY
Any IPv4 address number.
const uint ADDR_NONE
An invalid IPv4 address number.
const ushort PORT_ANY
Any IPv4 port number.

this(uint addr, ushort port)
this(ushort port)
Construct a new Address. addr may be ADDR_ANY (default) and port may be PORT_ANY, and the actual numbers may not be known until a connection is made.
this(char[] addr, ushort port)
addr may be an IPv4 address string in the dotted-decimal form a.b.c.d, or a host name that will be resolved using an InternetHost object. port may be PORT_ANY as stated above.

AddressFamily addressFamily()
Overridden to return AddressFamily.INET.
ushort port()
Returns the IPv4 port number.
uint addr()
Returns the IPv4 address number.

char[] toAddrString()
Human readable string representing the IPv4 address in dotted-decimal form.
char[] toPortString()
Human readable string representing the IPv4 port.
char[] toString()
Human readable string representing the IPv4 address and port in the form a.b.c.d:e.

static uint parse(char[] addr)
Parse an IPv4 address string in the dotted-decimal form a.b.c.d and return the number. If the string is not a legitimate IPv4 address, ADDR_NONE is returned.


class HostException : Exception
Base exception thrown from an InternetHost.

class InternetHost
InternetHost is a class for resolving IPv4 addresses.

char[] name
char[][] aliases
uint[] addrList
These members are populated when one of the following functions are called without failure:

bit getHostByName(char[] name)
Resolve host name. Returns false if unable to resolve.
bit getHostByAddr(uint addr)
Resolve IPv4 address number. Returns false if unable to resolve.
bit getHostByAddr(char[] addr)
Same as previous, but addr is an IPv4 address string in the dotted-decimal form a.b.c.d. Returns false if unable to resolve.


enum SocketShutdown
How a socket is shutdown:

RECEIVE
socket receives are disallowed
SEND
socket sends are disallowed
BOTH
both RECEIVE and SEND

enum SocketFlags
Flags may be OR'ed together:

NONE
no flags specified
OOB
out-of-band stream data
PEEK
peek at incoming data without removing it from the queue
DONTROUTE
data should not be subject to routing; this flag may be ignored.

enum SocketOptionLevel
The level at which a socket option is defined:

SOCKET
socket level
IP
internet protocol level
TCP
transmission control protocol level
UDP
user datagram protocol level

enum SocketOption
Specifies a socket option:

DEBUG
record debugging information
BROADCAST
allow transmission of broadcast messages
REUSEADDR
allow local reuse of address
LINGER
linger on close if unsent data is present
OOBINLINE
receive out-of-band data in band
SNDBUF
send buffer size
RCVBUF
receive buffer size
KEEPALIVE
keep connection alive
DONTROUTE
do not route
TCP_NODELAY
disable the Nagle algorithm for send coalescing

struct linger
Linger information for use with SocketOption.LINGER.

ushort on
Nonzero for on.
ushort time
Linger time.

struct timeval
Duration timeout value.

int seconds
Number of seconds.
int microseconds
Number of additional microseconds.

class SocketException : Exception
Base exception thrown from a Socket.

class Socket
Socket is a class that creates a network communication endpoint using the Berkeley sockets interface.

this(AddressFamily af, SocketType type, ProtocolType protocol)
this(AddressFamily af, SocketType type)
Create a blocking socket. If a single protocol type exists to support this socket type within the address family, the ProtocolType may be omitted.

bit blocking
Property to get or set whether the socket is blocking or nonblocking.

bit isAlive
Property that indicates if this is a valid, alive socket.

AddressFamily addressFamily()
Get the socket's address family.

void bind(Address addr)
Associate a local address with this socket.

void connect(Address to)
Establish a connection. If the socket is blocking, connect waits for the connection to be made. If the socket is nonblocking, connect returns immediately and the connection attempt is still in progress.

void listen(int backlog)
Listen for an incoming connection. bind must be called before you can listen. The backlog is a request of how many pending incoming connections are queued until accept'ed.

Socket accept()
Accept an incoming connection. If the socket is blocking, accept waits for a connection request. Throws SocketAcceptException if unable to accept.

void shutdown(SocketShutdown how)
Disables sends and/or receives.

void close()
Immediately drop any connections and release socket resources. Calling shutdown before close is recommended for connection-oriented sockets. The Socket object is no longer usable after close.

Address remoteAddress()
Remote endpoint Address.

Address localAddress()
Local endpoint Address.

const int ERROR
Send or receive error code.

int send(void[] buf, SocketFlags flags)
int send(void[] buf)
Send data on the connection. Returns the number of bytes actually sent, or ERROR on failure. If the socket is blocking and there is no buffer space left, send waits.

int sendTo(void[] buf, SocketFlags flags, Address to)
int sendTo(void[] buf, Address to)
int sendTo(void[] buf, SocketFlags flags)
int sendTo(void[] buf)
Send data to a specific destination Address. If the destination address is not specified, a connection must have been made and that address is used. If the socket is blocking and there is no buffer space left, sendTo waits.

int receive(void[] buf, SocketFlags flags)
int receive(void[] buf)
Receive data on the connection. Returns the number of bytes actually received, 0 if the remote side has closed the connection, or ERROR on failure. If the socket is blocking, receive waits until there is data to be received.

int receiveFrom(void[] buf, SocketFlags flags, out Address from)
int receiveFrom(void[] buf, out Address from)
int receiveFrom(void[] buf, SocketFlags flags)
int receiveFrom(void[] buf)
Receive data and get the remote endpoint Address. Returns the number of bytes actually received, 0 if the remote side has closed the connection, or ERROR on failure. If the socket is blocking, receiveFrom waits until there is data to be received.

int getOption(SocketOptionLevel level, SocketOption option, void[] result)
Get a socket option. Returns the number of bytes written to result.
int getOption(SocketOptionLevel level, SocketOption option, out int result)
Same as previous, but for the common case of integer and boolean options.

void setOption(SocketOptionLevel level, SocketOption option, void[] value)
Set a socket option.
void setOption(SocketOptionLevel level, SocketOption option, int value)
Same as previous, but for the common case of integer and boolean options.

static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError, timeval* tv)
static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError, int microseconds)
static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError)
Wait for a socket to change status. A wait timeout timeval or int microseconds may be specified; if a timeout is not specified or the timeval is null, the maximum timeout is used. The timeval timeout has an unspecified value when select returns. Returns the number of sockets with status changes, 0 on timeout, or -1 on interruption. If the return value is greter than 0, the SocketSets are updated to only contain the sockets having status changes. For a connecting socket, a write status change means the connection is established and it's able to send. For a listening socket, a read status change means there is an incoming connection request and it's able to accept.

class TcpSocket : Socket
TcpSocket is a shortcut class for a TCP Socket.

this()
Constructs a blocking TCP Socket.
this(InternetAddress connectTo)
Constructs a blocking TCP Socket and connects to an InternetAddress.

class UdpSocket : Socket
UdpSocket is a shortcut class for a UDP Socket.

this()
Constructs a blocking UDP Socket.


class SocketSet
A collection of sockets for use with Socket.select.

this(uint max)
Set the maximum amount of sockets that may be added.
this()
Uses the default maximum for the system.

uint max
Property to get the maximum amount of sockets that may be added to this SocketSet.

void add(Socket s)
Add a Socket to the collection. Adding more than the maximum has dangerous side affects.

void remove(Socket s)
Remove this Socket from the collection.

int isSet(Socket s)
Returns nonzero if this Socket is in the collection.

void reset()
Reset the SocketSet so that there are 0 Sockets in the collection.

Notes

For Win32 systems, link with ws2_32.lib.

Example

See /dmd/samples/d/listener.d.
written by Christopher E. Miller