std/socket
March 26, 2026 ยท View on GitHub
Network socket programming with TCP/IP support.
Constants
Address Families
std::socket::AfInet- IPv4 (value: 2)std::socket::AfInet6- IPv6 (value: 2)std::socket::PfInet- IPv4 protocol family (value: 2)
Socket Types
std::socket::SockStream- TCP stream socket (value: 1)
Shutdown Options
std::socket::ShutRD- Shutdown read (value: 0)std::socket::ShutWR- Shutdown write (value: 1)std::socket::ShutRDWR- Shutdown both (value: 2)
Address Constants
std::socket::InAddrAny- Bind to any address (0)std::socket::InAddrBroadcast- Broadcast address (4294967295)
Socket Options
std::socket::SocketReuseAddr- Reuse address optionstd::socket::SomAxConn- Max connection queue (128 on Linux, 5 on Windows)
Flags
std::socket::AiPassive- Passive socket flagstd::socket::AiCanonName- Canonical name flagstd::socket::MsgNoSig- No SIGPIPE signal (Linux)
Types
std::socket
Main socket structure.
Fields:
int fd(Linux) oruint* fd(Windows) - Socket file descriptorstd::socket::sockaddr_in address- Socket addressint addressLength- Address structure length
std::socket::sockaddr_in
IPv4 socket address.
Fields:
short sin_family- Address familyushort sin_port- Port number (network byte order)std::socket::in_addr sin_addr- IP addresschar[8] sin_zero- Padding
std::socket::addrinfo
Address information for DNS resolution.
Fields:
int ai_flags- Input flagsint ai_family- Address familyint ai_socktype- Socket typeint ai_protocol- Protocoluint/usize ai_addrlen- Address lengthstd::socket::sockaddr* ai_addr- Socket addresschar* ai_canonname- Canonical namestd::socket::addrinfo* ai_next- Next in linked list
Socket Methods
Constructor
std::socket this()
Creates new socket (fd initialized to -1).
open
int open(char* ip, int port, long flag)
Opens socket with IP address, port, and flag (InAddrAny or InAddrBroadcast).
openAny
int openAny(int port)
Opens socket on any address with specified port.
bind
int bind()
Binds socket to address.
listen
int listen()
Listens for incoming connections.
connect
int connect()
Connects to remote address.
accept
void accept(std::socket* acceptor)
Accepts incoming connection into acceptor socket.
read
int read(char* data, int length)
Reads data from socket.
write
int write(char* data, int length)
int write(char* data)
int write(std::string str)
Writes data to socket.
close
int close()
Closes socket connection.
Low-Level Functions
Byte Order Conversion
uint htonl(uint hostlong)
ushort htons(ushort hostshort)
uint ntohl(uint netlong)
ushort ntohs(ushort netshort)
Host-to-network and network-to-host byte order conversion.
DNS Resolution
int getAddrInfo(char* node, char* service, std::socket::addrinfo* hints, std::socket::addrinfo** res)
void freeAddrInfo(std::socket::addrinfo* res)
char* getAddrInfoStrErr(int errcode)
DNS hostname resolution.
IP Address Conversion
int inetPton(int af, char* src, char* dst)
char* inetNtop(int af, char* src, char* dst, int cnt)
std::socket::in_addr inetAddr(char* cp)
Convert between text and binary IP addresses.
IPv4 Validation
bool std::ipv4::isValid(char* ip)
Validates IPv4 address format.
Example
import <std/socket>
// Server
std::socket server = std::socket();
server.open("0.0.0.0", 8080, std::socket::InAddrAny);
server.bind();
server.listen();
std::socket client = std::socket();
server.accept(&client);
char[1024] buffer;
int received = client.read(&buffer, 1024);
client.write("Hello\n");
client.close();
server.close();
// Client
std::socket conn = std::socket();
conn.open("127.0.0.1", 8080, std::socket::InAddrBroadcast);
conn.connect();
conn.write("GET / HTTP/1.1\r\n\r\n");
conn.close();