本文承接系列文件,依據 1993 年 Winsock 1.1 規範,整理 輸入輸出、Socket 選項控制、位址轉換、多工監控 等核心 API,包含 30 個 BSD 標準函數與 16 個 Windows 擴充函數。以下為第 11-20 號函數詳細說明。
char FAR * PASCAL FAR inet_ntoa(struct in_addr in);
in - IPv4 位址結構 (32-bit)InetNtopint PASCAL FAR ioctlsocket(SOCKET s, long cmd, u_long FAR *argp);
FIONBIO:啟用/停用非阻塞模式 (*argp=1/0)FIONREAD:取得可立即讀取資料量 (bytes)SIOCATMARK:檢查 OOB 資料是否已讀完 (暫未實作)SOCKET_ERROR 失敗int PASCAL FAR listen(SOCKET s, int backlog);
backlog - 未完成連線佇列最大長度 (系統限制最大 5,最小 1)acceptu_long PASCAL FAR ntohl(u_long netlong); // 32-bit
u_short PASCAL FAR ntohs(u_short netshort); // 16-bit
htonl/ntohl, htons/ntohsint PASCAL FAR recv(SOCKET s, char FAR *buf, int len, int flags);
MSG_PEEK (窺視不移除)、MSG_OOB (讀取緊急資料,暫未實作)int PASCAL FAR recvfrom(SOCKET s, char FAR *buf, int len, int flags,
struct sockaddr FAR *from, int FAR *fromlen);
recv,from/fromlen 被忽略int PASCAL FAR select(int nfds, fd_set FAR *readfds, fd_set FAR *writefds,
fd_set FAR *exceptfds, const struct timeval FAR *timeout);
nfds 在 Windows 忽略;timeout=NULL 表永久阻塞SOCKET_ERROR 失敗int PASCAL FAR send(SOCKET s, const char FAR *buf, int len, int flags);
WSAEWOULDBLOCK)MSG_DONTROUTE (暫未實作)、MSG_OOBint PASCAL FAR sendto(SOCKET s, const char FAR *buf, int len, int flags,
const struct sockaddr FAR *to, int tolen);
send (忽略 to/tolen)下集將涵蓋 setsockopt, shutdown, socket, gethostbyaddr, gethostbyname, gethostname, getprotobyname, getprotobynumber, getservbyname, getservbyport 等 Socket 建立、關閉、名稱解析與服務查詢函數。