Share via


Socket.Send Yöntem

Tanım

Bağlı Socketbir öğesine veri gönderir.

Aşırı Yüklemeler

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

Send(ReadOnlySpan<Byte>)

Bağlı Socketbir öğesine veri gönderir.

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Belirtilen sayıda veri baytını, belirtilen uzaklıkta başlayıp belirtilen SocketFlagsdeğerini kullanarak bağlı Socketbir öğesine gönderir.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Listedeki arabellek kümesini, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

Send(Byte[], Int32, Int32, SocketFlags)

Belirtilen sayıda veri baytını, belirtilen uzaklıkta başlayıp belirtilen SocketFlagsdeğerini kullanarak bağlı Socketbir öğesine gönderir.

Send(Byte[], Int32, SocketFlags)

Belirtilen sayıda veriyi, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

Send(IList<ArraySegment<Byte>>)

Listedeki arabellek kümesini bağlı Socketbir öğesine gönderir.

Send(IList<ArraySegment<Byte>>, SocketFlags)

Listedeki arabellek kümesini, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

Send(Byte[], SocketFlags)

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

Send(ReadOnlySpan<Byte>, SocketFlags)

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

Send(Byte[])

Bağlı Socketbir öğesine veri gönderir.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

socketFlags
SocketFlags

Gönderme ve alma davranışlarını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

errorCode
SocketError

Bu yöntem döndürdüğünde, yuva için hata kodlarını tanımlayan numaralandırma değerlerinden birini içerir.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

Açıklamalar

Sendveya Accept yönteminde Connect belirtilen uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri içeren bir arabellek gerektirir. SocketFlags Değer varsayılan olarak 0, arabellek uzaklığı varsayılan olarak 0 ve varsayılan olarak gönderilecek bayt sayısı arabelleğin boyutuna ayarlanır.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmıyorsanız SendTo , çağrısından önce öğesini çağırmanız ConnectSendgerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme modunda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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.

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Önemli

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

Ayrıca bkz.

Şunlara uygulanır

Send(ReadOnlySpan<Byte>)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Bağlı Socketbir öğesine veri gönderir.

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

Açıklamalar

Sendveya Accept yönteminde Connect belirtilen uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri içeren bir arabellek gerektirir. SocketFlags Değer varsayılan olarak 0, arabellek uzaklığı varsayılan olarak 0 ve varsayılan olarak gönderilecek bayt sayısı arabelleğin boyutuna ayarlanır.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmıyorsanız SendTo , çağrısından önce öğesini çağırmanız ConnectSendgerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme modunda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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.

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Önemli

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

Ayrıca bkz.

Şunlara uygulanır

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen sayıda veri baytını, belirtilen uzaklıkta başlayıp belirtilen SocketFlagsdeğerini kullanarak bağlı Socketbir öğesine gönderir.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

offset
Int32

Veri arabelleğindeki veri göndermeye başlayabileceğiniz konum.

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

errorCode
SocketError

SocketError Yuva hatasını depolayan bir nesne.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffer, null değeridir.

offset 0'dan küçüktür.

-veya-

offset uzunluğundan bufferbüyük.

-veya-

size 0'dan küçüktür.

-veya-

size parametresinin değerinden bufferoffset daha uzundur.

socketFlags geçerli bir değer bileşimi değildir.

-veya-

öğesine erişilirken Socketbir işletim sistemi hatası oluşur.

Örnekler

Aşağıdaki kod örneği veri arabelleği, uzaklık, boyut ve SocketFlags bağlı Socketbir öğesine veri göndermek için öğesini belirtir.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Açıklamalar

Sendveya Accept yönteminde Connect belirtilen uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yüklemede DontRoute , parametre olarak socketflags bayrağını belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve verileri birkaç farklı konaklara göndermeyi planlıyorsanız kullanmanız gerekir SendTo. kullanmazsanız SendTo, her çağrısı öncesinde çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Boyutun, temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından da emin olmalısınız. Gönderiliyorsa, veri birimi gönderilmez ve Send bir SocketExceptionoluşturur.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece istenen bayt sayısı gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engellemesiz modda, Send istediğiniz bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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.

Ayrıca bkz.

Şunlara uygulanır

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Listedeki arabellek kümesini, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

Gönderilecek verileri içeren türün Byte listesiArraySegment<T>.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

errorCode
SocketError

SocketError Yuva hatasını depolayan bir nesne.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffers, null değeridir.

buffers boş.

Yuvaya erişmeye çalışılırken bir hata oluştu.

Açıklamalar

Bu aşırı yükleme, göndermek istediğiniz verileri içeren en az bir arabellek gerektirir. Değer SocketFlags varsayılan olarak 0'dır. Parametre olarak socketFlags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmazsanız SendTo , çağrısından önce çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme olmayan modda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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

Send(Byte[], Int32, Int32, SocketFlags)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen sayıda veri baytını, belirtilen uzaklıkta başlayıp belirtilen SocketFlagsdeğerini kullanarak bağlı Socketbir öğesine gönderir.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

offset
Int32

Veri arabelleğindeki veri göndermeye başlayabileceğiniz konum.

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffer, null değeridir.

offset 0'dan küçüktür.

-veya-

offset uzunluğundan bufferbüyük.

-veya-

size 0'dan küçüktür.

-veya-

size parametresinin değerinden bufferoffset daha uzundur.

socketFlags geçerli bir değer bileşimi değildir.

-veya-

öğesine erişilirken Socketbir işletim sistemi hatası oluşur.

Örnekler

Aşağıdaki kod örneği veri arabelleği, uzaklık, boyut ve SocketFlags bağlı Socketbir öğesine veri göndermek için öğesini belirtir.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Açıklamalar

Sendveya Accept yönteminde Connect belirtilen uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yüklemede DontRoute , parametre olarak socketflags bayrağını belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve verileri birkaç farklı konaklara göndermeyi planlıyorsanız kullanmanız gerekir SendTo. kullanmazsanız SendTo, her çağrısı öncesinde çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Boyutun, temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından da emin olmalısınız. Gönderiliyorsa, veri birimi gönderilmez ve Send bir SocketExceptionoluşturur.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece istenen bayt sayısı gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engellemesiz modda, Send istediğiniz bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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.

Ayrıca bkz.

Şunlara uygulanır

Send(Byte[], Int32, SocketFlags)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen sayıda veriyi, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

public:
 int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffer, null değeridir.

size 0'dan küçük veya arabellek boyutunu aşıyor.

socketFlags geçerli bir değer bileşimi değildir.

-veya-

Yuvaya erişilirken bir işletim sistemi hatası oluşur.

Örnekler

Aşağıdaki kod örneği arabellekte bulunan verileri gönderir ve için SocketFlagsbelirtirNone.

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int i = server->Send( msg, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", i.ToString() );
      
      // Get reply from the server.
      int byteCount = server->Receive( bytes, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest3

Açıklamalar

Sendveya Accept yönteminde Connect oluşturulan uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri, göndermek istediğiniz bayt sayısını ve herhangi SocketFlagsbir öğesinin bit düzeyinde birleşimini içeren bir arabellek gerektirir. Parametre olarak socketflags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecek.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmazsanız SendTo , yöntemine yapılan her çağrıdan önce yöntemini çağırmanız ConnectSend gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokolde, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece istenen bayt sayısı gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engellemesiz modda, Send istediğiniz bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

Boyutun temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından emin olmanız gerekir. Bunu yaparsa, veri birimi gönderilmez ve Send bir SocketExceptionoluşturur. bir alırsanız, belirli bir SocketExceptionhata 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.

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Önemli

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

Ayrıca bkz.

Şunlara uygulanır

Send(IList<ArraySegment<Byte>>)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Listedeki arabellek kümesini bağlı Socketbir öğesine gönderir.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

Gönderilecek verileri içeren türün Byte listesiArraySegment<T>.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffers, null değeridir.

buffers boş.

Yuvaya erişmeye çalışılırken bir hata oluştu. Aşağıdaki açıklamalar bölümüne bakın.

Açıklamalar

Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri içeren en az bir arabellek gerektirir.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmazsanız SendTo , çağrısından önce çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme modunda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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

Send(IList<ArraySegment<Byte>>, SocketFlags)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Listedeki arabellek kümesini, belirtilen SocketFlagskullanarak bağlı Socketbir öğesine gönderir.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Parametreler

buffers
IList<ArraySegment<Byte>>

Gönderilecek verileri içeren türün Byte listesiArraySegment<T>.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffers, null değeridir.

buffers boş.

Yuvaya erişmeye çalışılırken bir hata oluştu.

Açıklamalar

Bu aşırı yükleme, göndermek istediğiniz verileri içeren en az bir arabellek gerektirir. Değer SocketFlags varsayılan olarak 0'dır. Parametre olarak socketFlags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecektir.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmazsanız SendTo , çağrısından önce çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme olmayan modda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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

Send(Byte[], SocketFlags)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

public:
 int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffer, null değeridir.

Yuvaya erişmeye çalışılırken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği, bağlı Socketbir üzerinde veri göndermeyi gösterir.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Açıklamalar

Sendveya Accept yönteminde Connect oluşturulan uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send yöntemi hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri içeren bir arabelleğe ve bit düzeyinde birleşimine SocketFlagsihtiyaç duyar. Arabellek uzaklığı varsayılan olarak 0'a, gönderilecek bayt sayısı da arabelleğin boyutuna ayarlanır. Parametre değeri olarak socketflags bayrağını belirtirsenizDontRoute, gönderdiğiniz veriler yönlendirilmeyecek.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmıyorsanız SendTo , her çağrısından önce yöntemini çağırmanız ConnectSendgerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme modunda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama istenen bayt sayısını gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

Arabelleğinizin boyutunun temel alınan hizmet sağlayıcısının paket boyutu üst sınırını aşmadığından emin olmalısınız. Gönderiliyorsa, veri birimi gönderilmez ve Send bir SocketExceptionoluşturur. bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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.

Ayrıca bkz.

Şunlara uygulanır

Send(ReadOnlySpan<Byte>, SocketFlags)

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Belirtilen SocketFlagskullanarak bağlı Socket bir öğesine veri gönderir.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) As Integer

Parametreler

buffer
ReadOnlySpan<Byte>

Gönderilecek verileri içeren bayt aralığı.

socketFlags
SocketFlags

Gönderme ve alma davranışlarını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

Yuvaya erişmeye çalışılırken bir hata oluştu.

Ayrıca bkz.

Şunlara uygulanır

Send(Byte[])

Kaynak:
Socket.cs
Kaynak:
Socket.cs
Kaynak:
Socket.cs

Bağlı Socketbir öğesine veri gönderir.

public:
 int Send(cli::array <System::Byte> ^ buffer);
public int Send (byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

Döndürülenler

öğesine gönderilen Socketbayt sayısı.

Özel durumlar

buffer, null değeridir.

Yuvaya erişmeye çalışılırken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği, bağlı Socketbir üzerinde veri göndermeyi gösterir.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Açıklamalar

Sendveya Accept yönteminde Connect belirtilen uzak konağa zaman uyumlu olarak veri gönderir ve başarıyla gönderilen bayt sayısını döndürür. Send hem bağlantı odaklı hem de bağlantısız protokoller için kullanılabilir.

Bu aşırı yükleme, göndermek istediğiniz verileri içeren bir arabellek gerektirir. SocketFlags Değer varsayılan olarak 0, arabellek uzaklığı varsayılan olarak 0 ve varsayılan olarak gönderilecek bayt sayısı arabelleğin boyutuna ayarlanır.

Bağlantısız bir protokol kullanıyorsanız, bu yöntemi çağırmadan önce çağırmalısınız Connect veya Send bir SocketExceptionoluşturur. Bağlantı odaklı bir protokol kullanıyorsanız, uzak konak bağlantısı kurmak için kullanmanız Connect veya gelen bağlantıyı kabul etmek için kullanmanız Accept gerekir.

Bağlantısız bir protokol kullanıyorsanız ve birkaç farklı konaklara veri göndermeyi planlıyorsanız yöntemini kullanmanız SendTo gerekir. yöntemini kullanmazsanız SendTo , çağrısından önce çağrısı ConnectSendyapmanız gerekir. ile Connectvarsayılan uzak ana bilgisayar oluşturduktan sonra bile kullanabilirsinizSendTo. Ayrıca, çağrısından Send önce için başka bir çağrı yaparak varsayılan uzak konağı da değiştirebilirsiniz Connect.

Bağlantı odaklı bir protokol kullanıyorsanız, Send kullanılarak Socket.SendTimeoutzaman aşımı ayarlanmadığı sürece arabellekteki tüm baytlar gönderilene kadar engeller. Zaman aşımı değeri aşıldıysa, Send çağrısı bir SocketExceptionoluşturur. Engelleme modunda, Send arabellekteki bayt sayısından daha az gönderse bile başarıyla tamamlanabilir. Gönderilen bayt sayısını izlemek ve uygulama arabelleğe bayt gönderene kadar işlemi yeniden denemek uygulamanızın sorumluluğundadır. Ayrıca, gönderdiğiniz verilerin ağda hemen görüneceğinin garantisi yoktur. Ağ verimliliğini artırmak için temel alınan sistem, önemli miktarda giden veri toplanana kadar iletimi geciktirebilir. Yöntemin Send başarıyla tamamlanması, temel alınan sistemin verilerinizi ağ gönderme için arabelleğe almak için yeterli alanı olduğu anlamına gelir.

Not

bir alırsanız, belirli bir SocketExceptionhata 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

Gönderme işleminin başarıyla tamamlanması, verilerin başarıyla teslim edildiğine işaret etmez. Aktarım sistemi içinde aktarılacak verileri tutacak arabellek alanı yoksa, yuva engelleyici olmayan moda yerleştirilmediği sürece gönderme işlemi engellenir.

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.

Ayrıca bkz.

Şunlara uygulanır