// 解析 IP 字串
IPAddress ip = IPAddress.Parse("192.168.123.1");
// 特殊位址
IPAddress.Any // 0.0.0.0 綁定所有介面
IPAddress.None // 255.255.255.255 廣播/偽裝位址
IPAddress.Loopback // 127.0.0.1 本機回環
// 取得本機 IP(舊 API,建議改用 Dns.GetHostEntry)
IPAddress local = Dns.GetHostEntry(Dns.GetHostName())
.AddressList.First(a => a.AddressFamily == AddressFamily.InterNetwork);
IP + Port 組合,對應底層 sockaddr_in 結構:
var endPoint = new IPEndPoint(IPAddress.Any, 8080);
IPEndPoint 序列化後的不透明位址資料,用於底層互操作。
var socket = new Socket(
AddressFamily.InterNetwork, // IPv4
SocketType.Stream, // TCP
ProtocolType.Tcp // 必須與 SocketType 對應
);
| SocketType | ProtocolType | 協定 | 特性 |
|---|---|---|---|
| Stream | Tcp | TCP | 面向連線、可靠、有序 |
| Dgram | Udp | UDP | 無連線、不可靠、訊息邊界 |
| Raw | Icmp | ICMP | 原始封包、需管理員權限 |
| Raw | Raw | IP | 自訂 IP 協定 |
Blocking:同步/非同步模式切換Connected:連線狀態(注意:僅反映最後一次 I/O 操作時狀態)SetSocketOption:設定 SO_REUSEADDR、SO_KEEPALIVE、TCP_NODELAY 等Bind/Listen/Accept/Send/Receive:核心操作
try { socket.Connect(ep); }
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.ConnectionRefused)
{
// 處理連線被拒
}
簡化常見 TCP/UDP 操作:
TcpClient / TcpListener:TCP 客戶端/伺服器UdpClient:UDP 通訊Socket,提供更安全、簡潔的 APITcpClient/TcpListener/UdpClientasync/await + SocketAsyncEventArgs 或 Task 封裝SocketOptionName.KeepAlive