Socket.Send Yöntem
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.
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.
Kapatılmış Socket .
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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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.
Kapatılmış Socket .
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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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
- 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 buffer
büyük.
-veya-
size
0'dan küçüktür.
-veya-
size
parametresinin değerinden buffer
offset
daha uzundur.
socketFlags
geçerli bir değer bileşimi değildir.
-veya-
öğesine erişilirken Socketbir işletim sistemi hatası oluşur.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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.
Kapatılmış Socket .
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
- 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 buffer
büyük.
-veya-
size
0'dan küçüktür.
-veya-
size
parametresinin değerinden buffer
offset
daha uzundur.
socketFlags
geçerli bir değer bileşimi değildir.
-veya-
öğesine erişilirken Socketbir işletim sistemi hatası oluşur.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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
- 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.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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.
Kapatılmış Socket .
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.
Kapatılmış Socket .
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
- 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.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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.
Kapatılmış Socket .
Ayrıca bkz.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Ş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
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.
Kapatılmış Socket .
Ö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.
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)