Socket.SendTo 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳送資料至特定的端點。
多載
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
從緩衝區中的指定位置開始且使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。 |
SendTo(Byte[], Int32, SocketFlags, EndPoint) |
使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。 |
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
使用指定的 SocketFlags,傳送資料至特定端點。 |
SendTo(ReadOnlySpan<Byte>, EndPoint) |
傳送資料至指定的端點。 |
SendTo(Byte[], SocketFlags, EndPoint) |
使用指定的 SocketFlags,傳送資料至特定端點。 |
SendTo(Byte[], EndPoint) |
傳送資料至指定的端點。 |
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
使用指定的 SocketFlags,傳送資料至特定端點。 |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
從緩衝區中的指定位置開始且使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。
public:
int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
參數
- offset
- Int32
資料緩衝區中要開始傳送資料的位置。
- size
- Int32
要傳送的位元組數。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
傳回
已傳送的位元組數。
例外狀況
offset
小於 0。
-或-
offset
大於 buffer
的長度。
-或-
size
小於 0。
-或-
size
大於 buffer
的長度減去 offset
參數的值。
呼叫堆疊中的呼叫端沒有所需的使用權限。
範例
下列程式代碼範例會將無連接數據報傳送至指定的遠端主機。 位移、大小和 SocketFlags 會傳遞至 SendTo 方法。
static void SendTo4()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, 0, msg->Length, SocketFlags::None, endPoint );
s->Close();
}
public static void SendTo4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo4()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
備註
在此多載中 DontRoute ,如果您將旗標指定為 socketflags
參數,則不會路由傳送的數據。
如果您使用無連線通訊協定,則不需要先使用 Connect 方法建立預設遠端主機,再呼叫 SendTo。 如果您想要呼叫 方法, Send 您只需要執行此動作。 如果您在呼叫 SendTo之前呼叫 Connect 方法,參數remoteEP
只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您需要識別指派的局域網路位址和埠號碼,您可以在方法成功完成之後SendTo使用 LocalEndPoint 屬性。
雖然適用於無連線通訊協定, SendTo 但也適用於連線導向通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法或使用 Accept 方法來接受連入連線要求來建立遠端主機連線。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException。 您也可以在呼叫 SendTo 方法之前,先建立無連線通訊協定的默認遠端主機。 在這兩種情況下,都會忽略 remoteEP
參數,SendTo並只將數據傳送至連線或預設的遠端主機。
封鎖套接字會封鎖,直到傳送要求的位元元數目為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送單一作業中要求的所有位元組。 您的應用程式負責追蹤傳送的位元組數目,以及重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出數據為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的數據。
如果您在封鎖模式中使用無連線通訊協定,將會封鎖直到 SendTo 傳送數據報為止。 如果您要將資料傳送至廣播位址,您必須先呼叫 SetSocketOption 方法,並將套接字選項設定為 SocketOptionName.Broadcast。 您也必須確定大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 SendTo 會擲回 SocketException。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
適用於
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。
public:
int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
參數
- size
- Int32
要傳送的位元組數。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
傳回
已傳送的位元組數。
例外狀況
指定的 size
超過 buffer
的大小。
嘗試存取通訊端時發生錯誤。
範例
下列程式代碼範例會將無連接數據報傳送至指定的遠端主機。 大小和 SocketFlags 會傳遞至 SendTo 方法。
static void SendTo3()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, msg->Length, SocketFlags::None, endPoint );
s->Close();
}
public static void SendTo3()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo3()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
備註
在此多載中,緩衝區位移預設為 0。 如果您將旗標指定 DontRoute 為 socketflags
參數,則不會路由傳送您傳送的數據。
如果您使用無連線通訊協定,則不需要先使用 Connect 方法建立預設遠端主機,再呼叫 SendTo。 如果您想要呼叫 方法, Send 您只需要執行此動作。 如果您在呼叫 SendTo之前呼叫 Connect 方法,參數remoteEP
只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您需要識別指派的局域網路位址和埠號碼,您可以在方法成功完成之後SendTo使用 LocalEndPoint 屬性。
雖然適用於無連線通訊協定, SendTo 但也適用於連線導向通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法或使用 Accept 方法來接受連入連線要求來建立遠端主機連線。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException。 您也可以在呼叫 SendTo 方法之前,先建立無連線通訊協定的默認遠端主機。 在這兩種情況下,都會忽略 remoteEP
參數,SendTo並只將數據傳送至連線或預設的遠端主機。
封鎖套接字會封鎖,直到傳送要求的位元元數目為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送單一作業中要求的所有位元組。 您的應用程式必須追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出數據為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的數據。
如果您在封鎖模式中使用無連線通訊協定,將會封鎖直到 SendTo 傳送數據報為止。 如果您要將資料傳送至廣播位址,您必須先呼叫 SetSocketOption 方法,並將套接字選項設定為 SocketOptionName.Broadcast。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 SendTo 會擲回 SocketException。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
適用於
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
使用指定的 SocketFlags,傳送資料至特定端點。
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer
參數
- buffer
- ReadOnlySpan<Byte>
位元組範圍,包含要傳送的資料。
- socketFlags
- SocketFlags
傳送數據時將使用之值的位元組合 SocketFlags 。
- socketAddress
- SocketAddress
SocketAddress,表示資料的目的端。
傳回
已傳送的位元組數。
例外狀況
socketAddress
為 null
。
嘗試存取通訊端時發生錯誤。
適用於
SendTo(ReadOnlySpan<Byte>, EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
傳送資料至指定的端點。
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer
參數
- buffer
- ReadOnlySpan<Byte>
位元組範圍,包含要傳送的資料。
傳回
已傳送的位元組數。
例外狀況
remoteEP
為 null
。
嘗試存取通訊端時發生錯誤。
適用於
SendTo(Byte[], SocketFlags, EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
使用指定的 SocketFlags,傳送資料至特定端點。
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
參數
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
傳回
已傳送的位元組數。
例外狀況
嘗試存取通訊端時發生錯誤。
範例
下列程式代碼範例會將無連接數據報傳送至指定的遠端主機。 SocketFlags 會傳遞至 SendTo 方法。
static void SendTo2()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, SocketFlags::None, endPoint );
s->Close();
}
public static void SendTo2()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo2()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint)
s.Close()
End Sub
備註
在此多載中,緩衝區位移預設為0,而要傳送的位元元組數目預設為的大小 buffer
。 如果您將 DontRoute 旗標指定為 socketflags
參數,將不會路由傳送您傳送的數據。
如果您使用無連線通訊協定,則不需要先使用 方法來建立預設遠端主機, Connect 再呼叫 SendTo。 如果您想要呼叫 Send 方法,則只需要執行此動作。 如果您在呼叫 SendTo之前呼叫 Connect 方法,參數remoteEP
只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您需要識別指派的局域網路位址和埠號碼,您可以在方法成功完成之後SendTo使用 LocalEndPoint 屬性。
雖然適用於無連線通訊協定, SendTo 但也適用於面向連線的通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法來建立遠端主機連線,或使用 方法來接受連入連線要求 Accept 。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException。 您也可以在呼叫 SendTo 方法之前,為無連線通訊協定建立默認遠端主機。 在上述任一情況下, SendTo 都會忽略 參數, remoteEP
並只將數據傳送至已連線或預設的遠端主機。
封鎖套接字會封鎖,直到 傳送要求的所有位元組 buffer
為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送 中的所有 buffer
位元組。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送 中的所有位元組 buffer
為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出數據為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的數據。
如果您在封鎖模式中使用無連線通訊協定, SendTo 將會封鎖直到傳送數據報為止。 如果您要將資料傳送至廣播位址,您必須先呼叫 方法, SetSocketOption 並將套接字選項設定為 SocketOptionName.Broadcast。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 SendTo 會擲回 SocketException。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
適用於
SendTo(Byte[], EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
傳送資料至指定的端點。
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer
參數
傳回
已傳送的位元組數。
例外狀況
嘗試存取通訊端時發生錯誤。
範例
下列程式代碼範例會將無連接數據報傳送至指定的遠端主機。
static void SendTo1()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, endPoint );
s->Close();
}
public static void SendTo1()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, endPoint);
s.Close();
}
Public Shared Sub SendTo1()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, endPoint)
s.Close()
End Sub
備註
在此多載中,緩衝區位移預設為 0、要傳送的位元元組數目預設為參數的大小 buffer
,而 SocketFlags 值預設值為 0。
如果您使用無連線通訊協定,則不需要先使用 方法來建立預設遠端主機, Connect 再呼叫 SendTo。 如果您想要呼叫 Send 方法,則只需要執行此動作。 如果您在呼叫 SendTo之前呼叫 Connect 方法,參數remoteEP
只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您需要識別指派的局域網路位址和埠號碼,您可以在方法成功完成之後SendTo使用 LocalEndPoint 屬性。
雖然適用於無連線通訊協定, SendTo 但也適用於面向連線的通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法來建立遠端主機連線,或使用 方法來接受連入連線要求 Accept 。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException。 您也可以在呼叫 SendTo 方法之前,為無連線通訊協定建立默認遠端主機。 在上述任一情況下, SendTo 都會忽略 參數, remoteEP
並只將數據傳送至已連線或預設的遠端主機。
封鎖套接字將會封鎖,直到傳送緩衝區中的所有位元組為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送 中的所有 buffer
位元組。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送 中的所有位元組 buffer
為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的數據。
如果您在封鎖模式中使用無連線通訊協定, SendTo 將會封鎖直到傳送數據報為止。 如果您要將資料傳送至廣播位址,您必須先呼叫 方法, SetSocketOption 並將套接字選項設定為 SocketOptionName.Broadcast。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 SendTo 會擲回 SocketException。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
適用於
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
使用指定的 SocketFlags,傳送資料至特定端點。
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
參數
- buffer
- ReadOnlySpan<Byte>
位元組範圍,包含要傳送的資料。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
傳回
已傳送的位元組數。
例外狀況
remoteEP
為 null
。
嘗試存取通訊端時發生錯誤。