AddressFamily 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定 Socket 類別實例可以使用的尋址配置。
public enum class AddressFamily
public enum AddressFamily
type AddressFamily =
Public Enum AddressFamily
- 繼承
欄位
| 名稱 | 值 | Description |
|---|---|---|
| Unknown | -1 | 未知地址,家族。 |
| Unspecified | 0 | 未指定地址家族。 |
| Unix | 1 | Unix 本地到主機位址。 |
| InterNetwork | 2 | IP 版本 4 的地址。 |
| ImpLink | 3 | ARPANET IMP 地址。 |
| Pup | 4 | PUP 協議的地址。 |
| Chaos | 5 | MIT CHAOS 協議的地址。 |
| Ipx | 6 | IPX 或 SPX 位址。 |
| NS | 6 | 施樂NS協議的地址。 |
| Iso | 7 | ISO 協議的地址。 |
| Osi | 7 | OSI 協定的地址。 |
| Ecma | 8 | 歐洲電腦製造商協會(ECMA)地址。 |
| DataKit | 9 | Datakit 協定的地址。 |
| Ccitt | 10 | CCITT 協定的位址,例如 X.25。 |
| Sna | 11 | IBM SNA 地址。 |
| DecNet | 12 | DECnet 地址。 |
| DataLink | 13 | 直接資料連結介面位址。 |
| Lat | 14 | LAT地址。 |
| HyperChannel | 15 | 國家安全委員會超頻道地址。 |
| AppleTalk | 16 | AppleTalk 地址。 |
| NetBios | 17 | NetBios 地址。 |
| VoiceView | 18 | VoiceView 地址。 |
| FireFox | 19 | FireFox 地址。 |
| Banyan | 21 | Banyan 地址。 |
| Atm | 22 | 本地 ATM 服務地址。 |
| InterNetworkV6 | 23 | IP 版本 6 的位址。 |
| Cluster | 24 | Microsoft 叢集產品地址。 |
| Ieee12844 | 25 | IEEE 1284.4 工作小組地址。 |
| Irda | 26 | IrDA 地址。 |
| NetworkDesigners | 28 | 網路設計師OSI閘道支援協定的地址。 |
| Max | 29 | MAX地址。 |
| Packet | 65536 | 低階封包位址。 |
| ControllerAreaNetwork | 65537 | 控制器區域網路位址。 |
範例
以下範例利用 InterNetwork Socket建立 。AddressFamily
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
public class Sample
{
public static string DoSocketGet(string server)
{
//Set up variables and String to write to the server.
Encoding ASCII = Encoding.ASCII;
string Get = "GET / HTTP/1.1\r\nHost: " + server +
"\r\nConnection: Close\r\n\r\n";
Byte[] ByteGet = ASCII.GetBytes(Get);
Byte[] RecvBytes = new Byte[256];
String strRetPage = null;
// IPAddress and IPEndPoint represent the endpoint that will
// receive the request.
// Get first IPAddress in list return by DNS.
try
{
// Define those variables to be evaluated in the next for loop and
// then used to connect to the server. These variables are defined
// outside the for loop to make them accessible there after.
Socket s = null;
IPEndPoint hostEndPoint;
IPAddress hostAddress = null;
int conPort = 80;
// Get DNS host information.
IPHostEntry hostInfo = Dns.GetHostEntry(server);
// Get the DNS IP addresses associated with the host.
IPAddress[] IPaddresses = hostInfo.AddressList;
// Evaluate the socket and receiving host IPAddress and IPEndPoint.
for (int index=0; index<IPaddresses.Length; index++)
{
hostAddress = IPaddresses[index];
hostEndPoint = new IPEndPoint(hostAddress, conPort);
// Creates the Socket to send data over a TCP connection.
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
// Connect to the host using its IPEndPoint.
s.Connect(hostEndPoint);
if (!s.Connected)
{
// Connection failed, try next IPaddress.
strRetPage = "Unable to connect to host";
s = null;
continue;
}
// Sent the GET request to the host.
s.Send(ByteGet, ByteGet.Length, 0);
} // End of the for loop.
// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
while (bytes > 0)
{
bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}
} // End of the try block.
catch(SocketException e)
{
Console.WriteLine("SocketException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(NullReferenceException e)
{
Console.WriteLine("NullReferenceException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
return strRetPage;
}
public static void Main()
{
Console.WriteLine(DoSocketGet("localhost"));
}
}
Imports System.Text
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
_
Public Class Sample
Public Shared Function DoSocketGet(server As String) As String
'Set up variables and String to write to the server.
Dim ASCII As Encoding = Encoding.ASCII
Dim [Get] As String = "GET / HTTP/1.1" + ControlChars.Lf + ControlChars.NewLine + "Host: " + server + ControlChars.Lf + ControlChars.NewLine + "Connection: Close" + ControlChars.Lf + ControlChars.NewLine + ControlChars.Lf + ControlChars.NewLine
Dim ByteGet As [Byte]() = ASCII.GetBytes([Get])
Dim RecvBytes(256) As [Byte]
Dim strRetPage As [String] = Nothing
' IPAddress and IPEndPoint represent the endpoint that will
' receive the request.
' Get first IPAddress in list return by DNS.
Try
' Define those variables to be evaluated in the next for loop and
' then used to connect to the server. These variables are defined
' outside the for loop to make them accessible there after.
Dim s As Socket = Nothing
Dim hostEndPoint As IPEndPoint
Dim hostAddress As IPAddress = Nothing
Dim conPort As Integer = 80
' Get DNS host information.
Dim hostInfo As IPHostEntry = Dns.Resolve(server)
' Get the DNS IP addresses associated with the host.
Dim IPaddresses As IPAddress() = hostInfo.AddressList
' Evaluate the socket and receiving host IPAddress and IPEndPoint.
Dim index As Integer = 0
For index = 0 To IPaddresses.Length - 1
hostAddress = IPaddresses(index)
hostEndPoint = New IPEndPoint(hostAddress, conPort)
' Creates the Socket to send data over a TCP connection.
s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
' Connect to the host using its IPEndPoint.
s.Connect(hostEndPoint)
If Not s.Connected Then
' Connection failed, try next IPaddress.
strRetPage = "Unable to connect to host"
s = Nothing
GoTo ContinueFor1
End If
' Sent the GET request to the host.
s.Send(ByteGet, ByteGet.Length, 0)
ContinueFor1:
Next index ' End of the for loop.
' Receive the host home page content and loop until all the data is received.
'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine
Dim i As Integer
While bytes > 0
bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)
End While
' End of the try block.
Catch e As SocketException
Console.WriteLine("SocketException caught!!!")
Console.WriteLine(("Source : " + e.Source))
Console.WriteLine(("Message : " + e.Message))
Catch e As ArgumentNullException
Console.WriteLine("ArgumentNullException caught!!!")
Console.WriteLine(("Source : " + e.Source))
Console.WriteLine(("Message : " + e.Message))
Catch e As NullReferenceException
Console.WriteLine("NullReferenceException caught!!!")
Console.WriteLine(("Source : " + e.Source))
Console.WriteLine(("Message : " + e.Message))
Catch e As Exception
Console.WriteLine("Exception caught!!!")
Console.WriteLine(("Source : " + e.Source))
Console.WriteLine(("Message : " + e.Message))
End Try
Return strRetPage
End Function 'DoSocketGet
Public Shared Sub Main()
Console.WriteLine(DoSocketGet("localhost"))
End Sub
End Class
備註
成員 AddressFamily 指定將用來解析位址的位址方案 Socket 。 例如,InterNetwork 表示當 a Socket 連接到端點時,預期會使用 IP 版本 4 位址。