為實作 ICMP 應用程式,本文彙整常用 Windows Socket (Winsock) 函數原型、參數與傳回值,供後續 Ping/Traceroute 實作參考。
| 函數 | 用途 | 關鍵參數 | 傳回值 |
|---|---|---|---|
WSAStartup | 初始化 Winsock | wVersionRequested, lpWSAData | 0=成功,非0=失敗 |
socket | 建立 Socket | af(AF_INET), type(SOCK_RAW), protocol(IPPROTO_ICMP) | SOCKET 或 INVALID_SOCKET |
inet_addr | IP 字串轉 32 位整數 | cp ("A.B.C.D") | IP 整數或 INADDR_NONE |
gethostbyname | 主機名解析 | name | hostent* 或 NULL |
sendto | 發送資料 (無連線) | s, buf, len, flags, to, tolen | 發送位元組數或 SOCKET_ERROR |
recvfrom | 接收資料 (無連線) | s, buf, len, flags, from, fromlen | 接收位元組數、0=斷線、SOCKET_ERROR |
closesocket | 關閉 Socket | s | 0=成功、SOCKET_ERROR |
WSACleanup | 清理 Winsock | 無 | 0=成功 |
Raw Socket 需系統管理員權限 (Win2K/XP/NT)。下集將示範呼叫 ICMP.DLL 實作 Ping。