다음을 통해 공유


Socket.SendTo 메서드

정의

특정 엔드포인트에 데이터를 보냅니다.

오버로드

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)

Source:
Socket.cs
Source:
Socket.cs
Source:
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

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

offset
Int32

데이터 보내기를 시작할 데이터 버퍼의 위치입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

remoteEP
EndPoint

해당 데이터의 대상 위치를 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

또는

remoteEP이(가) null인 경우

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

socketFlags가 값의 유효한 조합이 아닌 경우

또는

Socket에 액세스하는 동안 운영 체제 오류가 발생한 경우

Socket이 닫혔습니다.

호출 스택에 있는 호출자에게 필요한 권한이 없는 경우

예제

다음 코드 예제에서는 지정된 원격 호스트에 연결 없는 데이터그램을 보냅니다. 오프셋, 크기 및 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 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 메서드를 사용하여 기본 원격 호스트를 Connect 설정할 필요가 없습니다. 메서드를 호출 Send 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 메서드를 Connect 호출 SendToremoteEP 하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 기본 서비스 공급자가 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당하므로 메서드를 호출 Bind 할 필요가 없습니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPointSendTo 속성을 사용할 수 있습니다.

연결 없는 프로토콜을 위한 것이지만 연결 SendTo 지향 프로토콜에서도 작동합니다. 연결 지향 프로토콜을 사용하는 경우 먼저 메서드를 호출 Connect 하여 원격 호스트 연결을 설정하거나 메서드를 사용하여 Accept 들어오는 연결 요청을 수락해야 합니다. 원격 호스트 연결을 설정하거나 수락하지 않으면 가 SendTo 을 throw합니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 SendTo 설정할 수도 있습니다. 이러한 경우 중 하나에서 는 SendTo 매개 변수를 remoteEP 무시하고 연결된 또는 기본 원격 호스트로만 데이터를 보냅니다.

요청된 바이트 수가 전송될 때까지 차단 소켓이 차단됩니다. 비차단 Socket 이 즉시 완료되므로 단일 작업에서 요청된 모든 바이트를 보내지 않을 수 있습니다. 이 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 외출 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 SendTo 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

차단 모드 SendTo 에서 연결 없는 프로토콜을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. 또한 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 SendTo 되지 않고 을 throw합니다 SocketException.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

SendTo(Byte[], Int32, SocketFlags, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
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

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

remoteEP
EndPoint

해당 데이터의 대상 위치를 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

또는

remoteEP이(가) null인 경우

지정된 sizebuffer의 크기를 초과한 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 지정된 원격 호스트에 연결 없는 데이터그램을 보냅니다. 및 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 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 메서드를 사용하여 기본 원격 호스트를 Connect 설정할 필요가 없습니다. 메서드를 호출 Send 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 메서드를 Connect 호출 SendToremoteEP 하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 기본 서비스 공급자가 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당하므로 메서드를 호출 Bind 할 필요가 없습니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPointSendTo 속성을 사용할 수 있습니다.

연결 없는 프로토콜을 위한 것이지만 연결 SendTo 지향 프로토콜에서도 작동합니다. 연결 지향 프로토콜을 사용하는 경우 먼저 메서드를 호출 Connect 하여 원격 호스트 연결을 설정하거나 메서드를 사용하여 Accept 들어오는 연결 요청을 수락해야 합니다. 원격 호스트 연결을 설정하거나 수락하지 않으면 가 SendTo 을 throw합니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 SendTo 설정할 수도 있습니다. 이러한 경우 중 하나에서 는 SendTo 매개 변수를 remoteEP 무시하고 연결된 또는 기본 원격 호스트로만 데이터를 보냅니다.

요청된 바이트 수가 전송될 때까지 차단 소켓이 차단됩니다. 비 차단이 Socket 즉시 완료되므로 단일 작업에서 요청된 모든 바이트를 보내지 않을 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 외출 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 SendTo 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

차단 모드 SendTo 에서 연결 없는 프로토콜을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. 또한 전송된 바이트 수가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 SendTo 되지 않고 을 throw합니다 SocketException.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Source:
Socket.cs
Source:
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인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

적용 대상

SendTo(ReadOnlySpan<Byte>, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
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
EndPoint

데이터의 대상을 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

remoteEP이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

적용 대상

SendTo(Byte[], SocketFlags, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
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

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

remoteEP
EndPoint

해당 데이터의 대상 위치를 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

또는

remoteEP이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 지정된 원격 호스트에 연결 없는 데이터그램을 보냅니다. 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 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 메서드를 사용하여 기본 원격 호스트를 Connect 설정할 필요가 없습니다. 메서드를 호출 Send 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 메서드를 Connect 호출 SendToremoteEP 하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 기본 서비스 공급자가 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당하므로 메서드를 호출 Bind 할 필요가 없습니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPointSendTo 속성을 사용할 수 있습니다.

연결 없는 프로토콜을 위한 것이지만 연결 SendTo 지향 프로토콜에서도 작동합니다. 연결 지향 프로토콜을 사용하는 경우 먼저 메서드를 호출 Connect 하여 원격 호스트 연결을 설정하거나 메서드를 사용하여 Accept 들어오는 연결 요청을 수락해야 합니다. 원격 호스트 연결을 설정하거나 수락하지 않으면 가 SendTo 을 throw합니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 SendTo 설정할 수도 있습니다. 이러한 경우 중 하나에서 는 SendTo 매개 변수를 remoteEP 무시하고 연결된 또는 기본 원격 호스트로만 데이터를 보냅니다.

차단 소켓은 의 요청된 모든 바이트가 buffer 전송될 때까지 차단됩니다. 비 차단이 Socket 즉시 완료되므로 의 모든 바이트를 buffer보내지 않을 수 있습니다. 애플리케이션의 책임 보낸 바이트 수를 추적 하는 애플리케이션에서 모든 바이트를 보낼 때 까지는 작업을 다시 시도 하는 것은 buffer합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 외출 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 SendTo 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

차단 모드 SendTo 에서 연결 없는 프로토콜을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. 또한 전송된 바이트 수가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 SendTo 되지 않고 을 throw합니다 SocketException.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

SendTo(Byte[], EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
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

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

remoteEP
EndPoint

데이터의 대상을 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

또는

remoteEP이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 지정된 원격 호스트에 연결 없는 데이터그램을 보냅니다.

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입니다.

연결 없는 프로토콜을 사용하는 경우 를 호출SendTo하기 전에 메서드를 사용하여 기본 원격 호스트를 Connect 설정할 필요가 없습니다. 메서드를 호출 Send 하려는 경우에만 이 작업을 수행해야 합니다. 를 호출하기 전에 메서드를 Connect 호출 SendToremoteEP 하는 경우 매개 변수는 해당 송신 작업에 대해 지정된 기본 원격 호스트만 재정의합니다. 또한 기본 서비스 공급자가 가장 적절한 로컬 네트워크 주소 및 포트 번호를 할당하므로 메서드를 호출 Bind 할 필요가 없습니다. 할당된 로컬 네트워크 주소 및 포트 번호를 식별해야 하는 경우 메서드가 성공적으로 완료된 LocalEndPointSendTo 속성을 사용할 수 있습니다.

연결 없는 프로토콜을 위한 것이지만 연결 SendTo 지향 프로토콜에서도 작동합니다. 연결 지향 프로토콜을 사용하는 경우 먼저 메서드를 호출 Connect 하여 원격 호스트 연결을 설정하거나 메서드를 사용하여 Accept 들어오는 연결 요청을 수락해야 합니다. 원격 호스트 연결을 설정하거나 수락하지 않으면 가 SendTo 을 throw합니다 SocketException. 메서드를 호출하기 전에 연결 없는 프로토콜에 대한 기본 원격 호스트를 SendTo 설정할 수도 있습니다. 이러한 경우 중 하나에서 는 SendTo 매개 변수를 remoteEP 무시하고 연결된 또는 기본 원격 호스트로만 데이터를 보냅니다.

버퍼의 모든 바이트가 전송될 때까지 차단 소켓이 차단됩니다. 비 차단이 Socket 즉시 완료되므로 의 모든 바이트를 buffer보내지 않을 수 있습니다. 애플리케이션의 책임 보낸 바이트 수를 추적 하는 애플리케이션에서 모든 바이트를 보낼 때 까지는 작업을 다시 시도 하는 것은 buffer합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 SendTo 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

차단 모드 SendTo 에서 연결 없는 프로토콜을 사용하는 경우 는 데이터그램이 전송될 때까지 차단됩니다. 브로드캐스트 주소로 데이터를 보내려면 먼저 메서드를 호출 SetSocketOption 하고 소켓 옵션을 SocketOptionName.Broadcast로 설정해야 합니다. 또한 전송된 바이트 수가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 SendTo 되지 않고 을 throw합니다 SocketException.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
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
EndPoint

데이터의 대상을 나타내는 EndPoint입니다.

반환

보낸 바이트 수입니다.

예외

remoteEP이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

적용 대상