Socket Oluşturucular
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Socket sınıfının yeni bir örneğini başlatır.
Aşırı Yüklemeler
Socket(SafeSocketHandle) |
Belirtilen yuva tanıtıcısı için sınıfının yeni bir örneğini Socket başlatır. |
Socket(SocketInformation) |
öğesinden DuplicateAndClose(Int32)döndürülen belirtilen değeri kullanarak sınıfının yeni bir örneğini Socket başlatır. |
Socket(SocketType, ProtocolType) |
Belirtilen yuva türünü ve protokolü kullanarak sınıfın Socket yeni bir örneğini başlatır. İşletim sistemi IPv6'yı destekliyorsa, bu oluşturucu çift modlu bir yuva oluşturur; aksi takdirde, bir IPv4 yuvası oluşturur. |
Socket(AddressFamily, SocketType, ProtocolType) |
Belirtilen adres ailesini, yuva türünü ve protokolü kullanarak sınıfın yeni bir örneğini Socket başlatır. |
Socket(SafeSocketHandle)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen yuva tanıtıcısı için sınıfının yeni bir örneğini Socket başlatır.
public:
Socket(System::Net::Sockets::SafeSocketHandle ^ handle);
public Socket (System.Net.Sockets.SafeSocketHandle handle);
new System.Net.Sockets.Socket : System.Net.Sockets.SafeSocketHandle -> System.Net.Sockets.Socket
Public Sub New (handle As SafeSocketHandle)
Parametreler
- handle
- SafeSocketHandle
Nesnenin kapsülleeceği yuvanın Socket yuva tutamacı.
Özel durumlar
handle
, null
değeridir.
handle
geçersizdir.
handle
bir yuva değil veya yuvayla ilgili bilgilere erişilemedi.
Açıklamalar
Bu yöntem, örneği sağlanan SafeSocketHandledosyasından toplanan verilerle doldururSocket. Farklı işletim sistemleri, özellikleri ve yapılandırması için bir yuva tutamacını veya dosya tanımlayıcısını sorgulamak için çeşitli düzeylerde destek sağlar. Elde Socket edilen örnekteki bazı genel API'ler ve Blockinggibi ProtocolType işletim sistemine göre farklılık gösterebilir.
Şunlara uygulanır
Socket(SocketInformation)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
öğesinden DuplicateAndClose(Int32)döndürülen belirtilen değeri kullanarak sınıfının yeni bir örneğini Socket başlatır.
public:
Socket(System::Net::Sockets::SocketInformation socketInformation);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public Socket (System.Net.Sockets.SocketInformation socketInformation);
public Socket (System.Net.Sockets.SocketInformation socketInformation);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
new System.Net.Sockets.Socket : System.Net.Sockets.SocketInformation -> System.Net.Sockets.Socket
new System.Net.Sockets.Socket : System.Net.Sockets.SocketInformation -> System.Net.Sockets.Socket
Public Sub New (socketInformation As SocketInformation)
Parametreler
- socketInformation
- SocketInformation
tarafından DuplicateAndClose(Int32)döndürülen yuva bilgileri.
- Öznitelikler
Açıklamalar
Oluşturucuyu her çağrının Socket bağımsız değişkeniyle aynı bayt dizisiyle birden çok kez çağırırsanız, aynı temel yuvayla birden çok yönetilen Sockets oluşturursunuz. Bu uygulama kesinlikle önerilmez.
Şunlara uygulanır
Socket(SocketType, ProtocolType)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen yuva türünü ve protokolü kullanarak sınıfın Socket yeni bir örneğini başlatır. İşletim sistemi IPv6'yı destekliyorsa, bu oluşturucu çift modlu bir yuva oluşturur; aksi takdirde, bir IPv4 yuvası oluşturur.
public:
Socket(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType);
public Socket (System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);
new System.Net.Sockets.Socket : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType -> System.Net.Sockets.Socket
Public Sub New (socketType As SocketType, protocolType As ProtocolType)
Parametreler
- socketType
- SocketType
Değerlerden SocketType biri.
- protocolType
- ProtocolType
Değerlerden ProtocolType biri.
Özel durumlar
ve protocolType
birleşimi socketType
geçersiz bir yuvaya neden olur.
Açıklamalar
socketType
parametresi sınıfının türünüSocket, protocolType
parametresi ise tarafından Socketkullanılan protokolü belirtir. İki parametre bağımsız değildir.
Socket Genellikle tür protokolde örtük olarak kullanılır. Tür ve protokol türünün birleşimi Socket geçersiz Socketbir ile sonuçlanırsa, bu oluşturucu bir SocketExceptionoluşturur.
Not
Bu oluşturucu bir SocketExceptionoluşturursa, belirli bir hata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.
Not
Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.
Şunlara uygulanır
Socket(AddressFamily, SocketType, ProtocolType)
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
- Kaynak:
- Socket.cs
Belirtilen adres ailesini, yuva türünü ve protokolü kullanarak sınıfın yeni bir örneğini Socket başlatır.
public:
Socket(System::Net::Sockets::AddressFamily addressFamily, System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType);
public Socket (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);
new System.Net.Sockets.Socket : System.Net.Sockets.AddressFamily * System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType -> System.Net.Sockets.Socket
Public Sub New (addressFamily As AddressFamily, socketType As SocketType, protocolType As ProtocolType)
Parametreler
- addressFamily
- AddressFamily
Değerlerden AddressFamily biri.
- socketType
- SocketType
Değerlerden SocketType biri.
- protocolType
- ProtocolType
Değerlerden ProtocolType biri.
Özel durumlar
, ve socketType
protocolType
birleşimi addressFamily
geçersiz bir yuvaya neden olur.
Örnekler
Aşağıdaki kod örneğinde sınıfının bir örneğinin nasıl oluşturulacağı gösterilmektedir Socket .
#using <System.dll>
using namespace System;
using namespace System::Text;
using namespace System::IO;
using namespace System::Net;
using namespace System::Net::Sockets;
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: ";
Get->Concat( server, "\r\nConnection: Close\r\n\r\n" );
array<Byte>^ByteGet = ASCII->GetBytes( Get );
array<Byte>^RecvBytes = gcnew array<Byte>(256);
String^ strRetPage = nullptr;
// 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 = nullptr;
IPEndPoint^ hostEndPoint;
IPAddress^ hostAddress = nullptr;
int conPort = 80;
// Get DNS host information.
IPHostEntry^ hostInfo = Dns::Resolve( server );
// Get the DNS IP addresses associated with the host.
array<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 = gcnew IPEndPoint( hostAddress,conPort );
// Creates the Socket to send data over a TCP connection.
s = gcnew 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 = nullptr;
continue;
}
// Sent the GET request to the host.
s->Send( ByteGet, ByteGet->Length, SocketFlags::None );
}
// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage = "Default HTML page on ";
strRetPage->Concat( server, ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}
}
catch ( SocketException^ e )
{
Console::WriteLine( "SocketException caught!!!" );
Console::Write( "Source : " );
Console::WriteLine( e->Source );
Console::Write( "Message : " );
Console::WriteLine( e->Message );
}
catch ( ArgumentNullException^ e )
{
Console::WriteLine( "ArgumentNULLException caught!!!" );
Console::Write( "Source : " );
Console::WriteLine( e->Source );
Console::Write( "Message : " );
Console::WriteLine( e->Message );
}
catch ( NullReferenceException^ e )
{
Console::WriteLine( "NULLReferenceException caught!!!" );
Console::Write( "Source : " );
Console::WriteLine( e->Source );
Console::Write( "Message : " );
Console::WriteLine( e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception caught!!!" );
Console::Write( "Source : " );
Console::WriteLine( e->Source );
Console::Write( "Message : " );
Console::WriteLine( e->Message );
}
return strRetPage;
}
int main()
{
Console::WriteLine( DoSocketGet( "localhost" ) );
}
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
Açıklamalar
addressFamily
parametresi, sınıfın kullandığı adresleme düzenini Socket belirtir, socketType
parametresi sınıfın Socket türünü ve protocolType
parametresi tarafından Socketkullanılan protokolü belirtir. Üç parametre bağımsız değildir. Bazı adres aileleri, kendileriyle birlikte hangi protokollerin kullanılabileceğini kısıtlar ve genellikle Socket tür protokolde örtük olur. Adres ailesi, Socket türü ve protokol türü birleşimi geçersiz Socketbir sonuç verirse, bu oluşturucu bir SocketExceptionoluşturur.
Not
Bu oluşturucu bir SocketExceptionoluşturursa, belirli bir hata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.
Not
Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.