Socket.SendTo Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Skickar data till en specifik slutpunkt.
Överlagringar
| Name | Description |
|---|---|
| SendTo(Byte[], EndPoint) |
Skickar data till den angivna slutpunkten. |
| SendTo(Byte[], SocketFlags, EndPoint) |
Skickar data till en specifik slutpunkt med den angivna SocketFlags. |
| SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Skickar det angivna antalet byte med data till den angivna slutpunkten med den angivna SocketFlags. |
| SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Skickar det angivna antalet byte med data till den angivna slutpunkten, med början på den angivna platsen i bufferten och med den angivna SocketFlags. |
SendTo(Byte[], EndPoint)
Skickar data till den angivna slutpunkten.
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
Parametrar
Returer
Antal byte som skickas.
Undantag
Ett fel uppstod vid försök att komma åt socketen.
Har Socket stängts.
Exempel
I följande kodexempel skickas ett anslutningslöst datagram till den angivna fjärrvärden.
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
Kommentarer
I den här överlagringen är buffertförskjutningen standardvärdet 0, antalet byte som ska skickas som standard till parameterns buffer storlek och SocketFlags värdet är som standard 0.
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med Connect metoden innan du anropar SendTo. Du behöver bara göra detta om du tänker anropa Send metoden. Om du anropar Connect metoden innan du anropar SendToåsidosätter parametern remoteEP endast den angivna standardvärden för den sändningsåtgärden. Du behöver inte heller anropa Bind metoden eftersom den underliggande tjänstleverantören tilldelar den lämpligaste lokala nätverksadressen och portnumret. Om du behöver identifiera den tilldelade lokala nätverksadressen och portnumret kan du använda LocalEndPoint egenskapen när SendTo metoden har slutförts.
Även om det är avsett för anslutningslösa protokoll, SendTo fungerar även med anslutningsorienterade protokoll. Om du använder ett anslutningsorienterat protokoll måste du först upprätta en fjärrvärdanslutning genom att anropa Connect metoden eller acceptera en inkommande anslutningsbegäran med hjälp av Accept metoden. Om du inte upprättar eller accepterar en fjärrvärdanslutning utlöser SendTo du en SocketException. Du kan också upprätta en standardvärd för ett anslutningslöst protokoll innan du anropar SendTo metoden. I något av dessa fall SendTo ignorerar parametern remoteEP och skickar endast data till den anslutna fjärrvärden eller standardvärden.
Blockering av sockets blockeras tills alla byte i bufferten skickas. Eftersom en icke-blockering Socket slutförs omedelbart kanske den inte skickar alla byte i buffer. Det är programmets ansvar att hålla reda på antalet skickade byte och att försöka utföra åtgärden igen tills programmet skickar alla byte i buffer. Det finns inte heller någon garanti för att de data du skickar kommer att visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendTo metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.
Om du använder ett anslutningslöst protokoll i blockeringsläge SendTo blockeras tills datagrammet skickas. Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet till SocketOptionName.Broadcast. Du måste också vara säker på att antalet skickade byte inte överskrider den maximala paketstorleken för den underliggande tjänstleverantören. Om det gör det skickas inte datagrammet och SendTo genererar en SocketException.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.
Se även
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gäller för
SendTo(Byte[], SocketFlags, EndPoint)
Skickar data till en specifik slutpunkt med den angivna 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
Parametrar
- socketFlags
- SocketFlags
En bitvis kombination av SocketFlags värdena.
Returer
Antal byte som skickas.
Undantag
Ett fel uppstod vid försök att komma åt socketen.
Har Socket stängts.
Exempel
I följande kodexempel skickas ett anslutningslöst datagram till den angivna fjärrvärden. SocketFlags skickas SendTo till metoden.
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
Kommentarer
I den här överlagringen är buffertförskjutningen standardvärdet 0 och antalet byte som ska skickas som standard till storleken på buffer. Om du anger DontRoute flaggan som socketflags parameter dirigeras inte de data som du skickar.
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med Connect metoden innan du anropar SendTo. Du behöver bara göra detta om du tänker anropa Send metoden. Om du anropar Connect metoden innan du anropar SendToåsidosätter parametern remoteEP endast den angivna standardvärden för den sändningsåtgärden. Du behöver inte heller anropa Bind metoden eftersom den underliggande tjänstleverantören tilldelar den lämpligaste lokala nätverksadressen och portnumret. Om du behöver identifiera den tilldelade lokala nätverksadressen och portnumret kan du använda LocalEndPoint egenskapen när SendTo metoden har slutförts.
Även om det är avsett för anslutningslösa protokoll, SendTo fungerar även med anslutningsorienterade protokoll. Om du använder ett anslutningsorienterat protokoll måste du först upprätta en fjärrvärdanslutning genom att anropa Connect metoden eller acceptera en inkommande anslutningsbegäran med hjälp av Accept metoden. Om du inte upprättar eller accepterar en fjärrvärdanslutning utlöser SendTo du en SocketException. Du kan också upprätta en standardvärd för ett anslutningslöst protokoll innan du anropar SendTo metoden. I något av dessa fall SendTo ignorerar parametern remoteEP och skickar endast data till den anslutna fjärrvärden eller standardvärden.
Blockering av sockets blockeras tills alla begärda byte i buffer skickas. Eftersom en icke-blockering Socket slutförs omedelbart kanske den inte skickar alla byte i buffer. Det är programmets ansvar att hålla reda på antalet skickade byte och att försöka utföra åtgärden igen tills programmet skickar alla byte i buffer. Det finns inte heller någon garanti för att de data du skickar kommer att visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendTo metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.
Om du använder ett anslutningslöst protokoll i blockeringsläge SendTo blockeras tills datagrammet skickas. Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet till SocketOptionName.Broadcast. Du måste också vara säker på att antalet skickade byte inte överskrider den maximala paketstorleken för den underliggande tjänstleverantören. Om det gör det skickas inte datagrammet och SendTo genererar en SocketException.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.
Se även
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gäller för
SendTo(Byte[], Int32, SocketFlags, EndPoint)
Skickar det angivna antalet byte med data till den angivna slutpunkten med den angivna 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
Parametrar
- size
- Int32
Antalet byte som ska skickas.
- socketFlags
- SocketFlags
En bitvis kombination av SocketFlags värdena.
Returer
Antal byte som skickas.
Undantag
Den angivna size överskrider storleken på buffer.
Ett fel uppstod vid försök att komma åt socketen.
Har Socket stängts.
Exempel
I följande kodexempel skickas ett anslutningslöst datagram till den angivna fjärrvärden. Storleken och SocketFlags skickas SendTo till metoden.
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
Kommentarer
I den här överlagringen är buffertförskjutningen standardvärdet 0. Om du anger DontRoute flaggan som socketflags parameter dirigeras inte de data som du skickar.
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med Connect metoden innan du anropar SendTo. Du behöver bara göra detta om du tänker anropa Send metoden. Om du anropar Connect metoden innan du anropar SendToåsidosätter parametern remoteEP endast den angivna standardvärden för den sändningsåtgärden. Du behöver inte heller anropa Bind metoden eftersom den underliggande tjänstleverantören tilldelar den lämpligaste lokala nätverksadressen och portnumret. Om du behöver identifiera den tilldelade lokala nätverksadressen och portnumret kan du använda LocalEndPoint egenskapen när SendTo metoden har slutförts.
Även om det är avsett för anslutningslösa protokoll, SendTo fungerar även med anslutningsorienterade protokoll. Om du använder ett anslutningsorienterat protokoll måste du först upprätta en fjärrvärdanslutning genom att anropa Connect metoden eller acceptera en inkommande anslutningsbegäran med hjälp av Accept metoden. Om du inte upprättar eller accepterar en fjärrvärdanslutning utlöser SendTo du en SocketException. Du kan också upprätta en standardvärd för ett anslutningslöst protokoll innan du anropar SendTo metoden. I något av dessa fall SendTo ignorerar parametern remoteEP och skickar endast data till den anslutna fjärrvärden eller standardvärden.
Blockering av sockets blockeras tills det begärda antalet byte skickas. Eftersom en icke-blockering Socket slutförs omedelbart kanske den inte skickar alla begärda byte i en enda åtgärd. Det är programmets ansvar att hålla reda på antalet skickade byte och att försöka utföra åtgärden igen tills programmet skickar det begärda antalet byte. Det finns inte heller någon garanti för att de data du skickar kommer att visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendTo metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.
Om du använder ett anslutningslöst protokoll i blockeringsläge SendTo blockeras tills datagrammet skickas. Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet till SocketOptionName.Broadcast. Du måste också vara säker på att antalet skickade byte inte överskrider den maximala paketstorleken för den underliggande tjänstleverantören. Om det gör det skickas inte datagrammet och SendTo genererar en SocketException.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.
Se även
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Gäller för
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
Skickar det angivna antalet byte med data till den angivna slutpunkten, med början på den angivna platsen i bufferten och med den angivna 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
Parametrar
- offset
- Int32
Positionen i databufferten där data ska börja skickas.
- size
- Int32
Antalet byte som ska skickas.
- socketFlags
- SocketFlags
En bitvis kombination av SocketFlags värdena.
Returer
Antal byte som skickas.
Undantag
offset är mindre än 0.
-eller-
offset är större än längden på buffer.
-eller-
size är mindre än 0.
-eller-
size är större än längden buffer på minus värdet för parametern offset .
socketFlags är inte en giltig kombination av värden.
-eller-
Ett operativsystemfel uppstår vid åtkomst till Socket.
Har Socket stängts.
En anropare i samtalsstacken har inte de behörigheter som krävs.
Exempel
I följande kodexempel skickas ett anslutningslöst datagram till den angivna fjärrvärden. Förskjutningen, storleken och SocketFlags skickas SendTo till metoden.
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
Kommentarer
I den här överlagringen DontRoute dirigeras inte de data som du skickar om du anger flaggan som socketflags parameter.
Om du använder ett anslutningslöst protokoll behöver du inte upprätta en standardvärd med Connect metoden innan du anropar SendTo. Du behöver bara göra detta om du tänker anropa Send metoden. Om du anropar Connect metoden innan du anropar SendToåsidosätter parametern remoteEP endast den angivna standardvärden för den sändningsåtgärden. Du behöver inte heller anropa Bind metoden eftersom den underliggande tjänstleverantören tilldelar den lämpligaste lokala nätverksadressen och portnumret. Om du behöver identifiera den tilldelade lokala nätverksadressen och portnumret kan du använda LocalEndPoint egenskapen när SendTo metoden har slutförts.
Även om det är avsett för anslutningslösa protokoll, SendTo fungerar även med anslutningsorienterade protokoll. Om du använder ett anslutningsorienterat protokoll måste du först upprätta en fjärrvärdanslutning genom att anropa Connect metoden eller acceptera en inkommande anslutningsbegäran med hjälp av Accept metoden. Om du inte upprättar eller accepterar en fjärrvärdanslutning utlöser SendTo du en SocketException. Du kan också upprätta en standardvärd för ett anslutningslöst protokoll innan du anropar SendTo metoden. I något av dessa fall SendTo ignorerar parametern remoteEP och skickar endast data till den anslutna fjärrvärden eller standardvärden.
Blockering av sockets blockeras tills det begärda antalet byte skickas. Eftersom en icke-blockerande Socket åtgärd slutförs omedelbart kanske den inte skickar alla begärda byte i en enda åtgärd. Det är programansvaret att hålla reda på antalet skickade byte och att försöka utföra åtgärden igen tills programmet skickar det begärda antalet byte. Det finns inte heller någon garanti för att de data du skickar kommer att visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendTo metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.
Om du använder ett anslutningslöst protokoll i blockeringsläge SendTo blockeras tills datagrammet skickas. Om du vill skicka data till en sändningsadress måste du först anropa SetSocketOption metoden och ange socketalternativet till SocketOptionName.Broadcast. Du måste också vara säker på att storleken inte överskrider den maximala paketstorleken för den underliggande tjänstleverantören. Om det gör det skickas inte datagrammet och SendTo genererar en SocketException.
Note
Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.
Se även
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint