Ping.SendAsync 메서드

정의

컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다.

오버로드

SendAsync(String, Int32, Byte[], PingOptions, Object)

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 사용하여 작업의 제한 시간 값을 지정하고 ICMP 패킷의 조각화 및 Time-to-Live 값을 제어할 수 있습니다.

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 사용하여 작업의 제한 시간 값을 지정하고 ICMP Echo 메시지 패킷의 조각화 및 Time-to-Live 값을 제어할 수 있습니다.

SendAsync(String, Int32, Byte[], Object)

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

SendAsync(IPAddress, Int32, Byte[], Object)

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

SendAsync(IPAddress, Int32, Object)

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

SendAsync(String, Object)

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다.

SendAsync(IPAddress, Object)

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다.

SendAsync(String, Int32, Object)

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

설명

이러한 메서드는 애플리케이션의 주 스레드는 차단 되지 않습니다. ICMP 에코 회신 메시지를 기다리는 동안 차단하려면 메서드를 Send 사용합니다.

참고

메서드에서 반환된 IP 주소는 SendAsync 악의적인 원격 컴퓨터에서 발생할 수 있습니다. 이를 사용하여 원격 컴퓨터에 연결하지 마세요. DNS를 사용하여 연결할 컴퓨터의 IP 주소를 확인합니다.

SendAsync(String, Int32, Byte[], PingOptions, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 사용하여 작업의 제한 시간 값을 지정하고 ICMP 패킷의 조각화 및 Time-to-Live 값을 제어할 수 있습니다.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : string * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

매개 변수

hostNameOrAddress
String

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 String입니다. 이 매개 변수에 지정된 값은 호스트 이름 또는 IP 주소의 문자열 표현일 수 있습니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

buffer
Byte[]

ICMP Echo 메시지와 함께 보내지고 ICMP Echo Reply 메시지에 담겨 반환되는 데이터가 포함된 Byte 배열입니다. 배열은 65,500바이트를 초과할 수 없습니다.

options
PingOptions

ICMP Echo 메시지 패킷의 조각화 및 Time-to-Live 값을 제어하는 데 사용되는 PingOptions 개체입니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

hostNameOrAddressnull이거나 빈 문자열("")인 경우

또는

buffernull입니다.

timeout가 0보다 작은 경우

SendAsync를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

hostNameOrAddress의 유효한 IP 주소를 확인할 수 없는 경우

이 개체가 삭제되었습니다.

buffer의 크기가 65500바이트를 초과하는 경우

Linux에서만 .NET 7 이상 버전: 프로세스가 권한이 없으며 buffer 비어 있지 않습니다.

예제

다음 코드 예제에서는이 메서드를 호출 하는 방법을 보여 줍니다.

#using <System.dll>

using namespace System;
using namespace System::Text;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::ComponentModel;
using namespace System::Threading;
void PingCompletedCallback( Object^ sender, PingCompletedEventArgs^ e );
void DisplayReply( PingReply^ reply );
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length == 1 )
      throw gcnew ArgumentException( "Ping needs a host or IP Address." );

   String^ who = args[ 1 ];
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 12 seconds for a reply.
   int timeout = 12000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   Console::WriteLine( "Time to live: {0}", options->Ttl );
   Console::WriteLine( "Don't fragment: {0}", options->DontFragment );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( who, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


void PingCompletedCallback( Object^ /*sender*/, PingCompletedEventArgs^ e )
{
   
   // If the operation was canceled, display a message to the user.
   if ( e->Cancelled )
   {
      Console::WriteLine( "Ping canceled." );
      
      // Let the main thread resume. 
      // UserToken is the AutoResetEvent object that the main thread 
      // is waiting for.
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   
   // If an error occurred, display the exception to the user.
   if ( e->Error != nullptr )
   {
      Console::WriteLine( "Ping failed:" );
      Console::WriteLine( e->Error->ToString() );
      
      // Let the main thread resume. 
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   PingReply ^ reply = e->Reply;
   DisplayReply( reply );
   
   // Let the main thread resume.
   (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
}


void DisplayReply( PingReply ^ reply )
{
   if ( reply == nullptr )
      return;

   Console::WriteLine( "ping status: {0}", reply->Status );
   if ( reply->Status == IPStatus::Success )
   {
      Console::WriteLine( "Address: {0}", reply->Address->ToString() );
      Console::WriteLine( "RoundTrip time: {0}", reply->RoundtripTime );
      Console::WriteLine( "Time to live: {0}", reply->Options->Ttl );
      Console::WriteLine( "Don't fragment: {0}", reply->Options->DontFragment );
      Console::WriteLine( "Buffer size: {0}", reply->Buffer->Length );
   }
}
using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.ComponentModel;
using System.Threading;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        public static void Main (string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");

            string who = args[0];
            AutoResetEvent waiter = new AutoResetEvent (false);

            Ping pingSender = new Ping ();

            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);

            // Wait 12 seconds for a reply.
            int timeout = 12000;

            // Set options for transmission:
            // The data can go through 64 gateways or routers
            // before it is destroyed, and the data packet
            // cannot be fragmented.
            PingOptions options = new PingOptions (64, true);

            Console.WriteLine ("Time to live: {0}", options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", options.DontFragment);

            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(who, timeout, buffer, options, waiter);

            // Prevent this example application from ending.
            // A real application should do something useful
            // when possible.
            waiter.WaitOne ();
            Console.WriteLine ("Ping example completed.");
        }

        private static void PingCompletedCallback (object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                Console.WriteLine ("Ping canceled.");

                // Let the main thread resume.
                // UserToken is the AutoResetEvent object that the main thread
                // is waiting for.
                ((AutoResetEvent)e.UserState).Set ();
            }

            // If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine ("Ping failed:");
                Console.WriteLine (e.Error.ToString ());

                // Let the main thread resume.
                ((AutoResetEvent)e.UserState).Set();
            }

            PingReply reply = e.Reply;

            DisplayReply (reply);

            // Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }

        public static void DisplayReply (PingReply reply)
        {
            if (reply == null)
                return;

            Console.WriteLine ("ping status: {0}", reply.Status);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
            }
        }
    }
}

설명

SendAsync 메서드 Echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션 차단 해서는 안 됩니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 애플리케이션 사용을 PingCompletedEventHandler 때 호출 되는 방법을 지정 하는 대리자 SendAsync 이벤트를 발생 시킵니다. 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 PingCompletedEventArgs 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 SendAsync 받습니다. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성에는 호출에 userToken 전달된 개체가 SendAsync 포함됩니다.

사용 하 여 애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우는 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수로 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout대해 매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

속성이 DontFragmenttrue 고 총 패킷 크기가 로컬 컴퓨터와 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정됩니다 PacketTooBig.

사용 된 대상에 Ttl 도달 하기 전에 ICMP 에코 메시지를 전달할 수 있는 최대 횟수를 지정 하는 속성입니다. 지정된 횟수를 전달한 후 패킷이 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정됩니다 TtlExpired.

적용 대상

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 사용하여 작업의 제한 시간 값을 지정하고 ICMP Echo 메시지 패킷의 조각화 및 Time-to-Live 값을 제어할 수 있습니다.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

매개 변수

address
IPAddress

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 IPAddress입니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

buffer
Byte[]

ICMP Echo 메시지와 함께 보내지고 ICMP Echo Reply 메시지에 담겨 반환되는 데이터가 포함된 Byte 배열입니다. 배열은 65,500바이트를 초과할 수 없습니다.

options
PingOptions

ICMP Echo 메시지 패킷의 조각화 및 Time-to-Live 값을 제어하는 데 사용되는 PingOptions 개체입니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

address 또는 buffernull인 경우

timeout가 0보다 작은 경우

SendAsync를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

address이 유효한 IP 주소가 아닌 경우

이 개체가 삭제되었습니다.

buffer의 크기가 65500바이트를 초과하는 경우

Linux에서만 .NET 7 이상 버전: 프로세스가 권한이 없으며 buffer 비어 있지 않습니다.

예제

다음 코드 예제에서는이 메서드를 호출 하는 방법을 보여 줍니다. 콜백 메서드의 구현은 메서드 오버로드 예제 섹션을 SendAsync 참조하세요.

다음 코드 예제에는 다음 네임스페이스가 필요합니다.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;
using namespace System::Threading;
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;

다음 코드 예제에서는 ICMP 에코 메시지를 비동기적으로 보냅니다.

void AsyncComplexLocalPing()
{
   
   // Get an object that will block the main thread.
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 10 seconds for a reply.
   int timeout = 10000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( address, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}
public static void AsyncComplexLocalPing ()
{
    // Get an object that will block the main thread.
    AutoResetEvent waiter = new AutoResetEvent (false);

    // Ping's the local machine.
    Ping pingSender = new Ping ();

    // When the PingCompleted event is raised,
    // the PingCompletedCallback method is called.
    pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

    // Set options for transmission:
    // The data can go through 64 gateways or routers
    // before it is destroyed, and the data packet
    // cannot be fragmented.
    PingOptions options = new PingOptions (64, true);

    // Send the ping asynchronously.
    // Use the waiter as the user token.
    // When the callback completes, it can wake up this thread.
    pingSender.SendAsync (address, timeout, buffer, options, waiter);

    // Prevent this example application from ending.
    // A real application should do something useful
    // when possible.
    waiter.WaitOne ();
    Console.WriteLine ("Ping example completed.");
}

설명

SendAsync 메서드 Echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션 차단 해서는 안 됩니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 애플리케이션 사용을 PingCompletedEventHandler 때 호출 되는 방법을 지정 하는 대리자 SendAsync 이벤트를 발생 시킵니다. 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 PingCompletedEventArgs 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 SendAsync 받습니다. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성에는 호출에 userToken 전달된 개체가 SendAsync 포함됩니다.

회신을 기다리는 동안 애플리케이션 블록 사용을 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수에 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

속성이 DontFragmenttrue 고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다.

사용 된 Ttl ICMP 에코 메시지를 전달 될 수 있는 최대 횟수를 지정 하는 속성 대상에 도달 하기 전에 합니다. 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(String, Int32, Byte[], Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)

매개 변수

hostNameOrAddress
String

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 String입니다. 이 매개 변수에 지정된 값은 호스트 이름 또는 IP 주소의 문자열 표현일 수 있습니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

buffer
Byte[]

ICMP Echo 메시지와 함께 보내지고 ICMP Echo Reply 메시지에 담겨 반환되는 데이터가 포함된 Byte 배열입니다. 배열은 65,500바이트를 초과할 수 없습니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

hostNameOrAddressnull이거나 빈 문자열("")인 경우

또는

buffernull입니다.

timeout가 0보다 작은 경우

SendAsync를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

hostNameOrAddress의 유효한 IP 주소를 확인할 수 없는 경우

이 개체가 삭제되었습니다.

buffer의 크기가 65500바이트를 초과하는 경우

Linux에서만 .NET 7 이상 버전: 프로세스가 권한이 없으며 buffer 비어 있지 않습니다.

예제

다음 코드 예제에서는 오버로드를 호출 SendAsync 하는 방법을 보여 줍니다. 클래스 개요를 Ping 참조하세요.

설명

SendAsync 메서드 Echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 애플리케이션 사용을 PingCompletedEventHandler 때 호출 되는 방법을 지정 하는 대리자 SendAsync 이벤트를 발생 시킵니다. 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 받 PingCompletedEventArgs 습니다SendAsync. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성은 호출에 userToken 전달된 개체를 SendAsync 포함합니다.

사용 하 여 애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우는 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수에 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷은 전송 중에 조각화될 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. DontFragmenttrue 이고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하면 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다. 패킷 또는 패킷 조각(조각화된 경우)은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(IPAddress, Int32, Byte[], Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지와 지정된 데이터 버퍼를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)

매개 변수

address
IPAddress

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 IPAddress입니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

buffer
Byte[]

ICMP Echo 메시지와 함께 보내지고 ICMP Echo Reply 메시지에 담겨 반환되는 데이터가 포함된 Byte 배열입니다. 배열은 65,500바이트를 초과할 수 없습니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

address 또는 buffernull인 경우

timeout가 0보다 작은 경우

SendAsync를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

address이 유효한 IP 주소가 아닌 경우

이 개체가 삭제되었습니다.

buffer의 크기가 65500바이트를 초과하는 경우

Linux에서만 .NET 7 이상 버전: 프로세스가 권한이 없으며 buffer 비어 있지 않습니다.

예제

오버로드 호출을 보여 주는 코드 예제는 SendAsync 클래스 개요를 Ping 참조하세요.

설명

이 메서드는 echo 메시지를 비동기적으로 보냅니다 및 애플리케이션 상태를 반환 합니다 (성공 또는 실패), 작업이 완료 되는 경우. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 이벤트가 발생할 때 SendAsync 호출되는 메서드를 지정하려면 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 받 PingCompletedEventArgs 습니다SendAsync. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성은 호출에 userToken 전달된 개체를 SendAsync 포함합니다.

참고

회신을 기다리는 동안 애플리케이션 블록 사용을 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수에 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷은 전송 중에 조각화될 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. DontFragmenttrue 이고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하면 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다. 패킷 또는 패킷 조각(조각화된 경우)은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(IPAddress, Int32, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)

매개 변수

address
IPAddress

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 IPAddress입니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

address이(가) null인 경우

timeout가 0보다 작은 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

address이 유효한 IP 주소가 아닌 경우

이 개체가 삭제되었습니다.

예제

오버로드 호출을 보여 주는 코드 예제는 SendAsync 클래스 개요를 Ping 참조하세요.

설명

SendAsync 메서드 Echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 애플리케이션 사용을 PingCompletedEventHandler 때 호출 되는 방법을 지정 하는 대리자 SendAsync 이벤트를 발생 시킵니다. 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 받 PingCompletedEventArgs 습니다SendAsync. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성은 호출에 userToken 전달된 개체를 SendAsync 포함합니다.

사용 하 여 애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우는 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수에 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷은 전송 중에 조각화될 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. DontFragmenttrue 이고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하면 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다. 패킷 또는 패킷 조각(조각화된 경우)은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(String, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, object? userToken);
public void SendAsync (string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)

매개 변수

hostNameOrAddress
String

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 String입니다. 이 매개 변수에 지정된 값은 호스트 이름 또는 IP 주소의 문자열 표현일 수 있습니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

hostNameOrAddressnull이거나 빈 문자열("")인 경우

SendAsync(String, Object) 메서드를 호출 중인 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

hostNameOrAddress의 유효한 IP 주소를 확인할 수 없는 경우

이 개체가 삭제되었습니다.

예제

메서드 호출을 보여 주는 코드 예제는 SendAsync 클래스 개요를 Ping 참조하세요.

설명

SendAsync 메서드 echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 이 메서드에 대한 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 이벤트가 발생할 때 SendAsync 호출되는 메서드를 지정하려면 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 받 PingCompletedEventArgs 습니다SendAsync. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성은 호출에 userToken 전달된 개체를 SendAsync 포함합니다.

참고

사용 하 여 애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우는 Send 메서드, 이러한 메서드는 동기적입니다.

이 메서드는 ICMP 에코 메시지와 함께 32 Byte 데이터 버퍼를 보냅니다. 메서드는 ICMP 에코 응답 메시지에 대해 5초 동안 대기합니다. 해당 시간에 회신을 받지 못하면 메서드가 반환되고 속성이 StatusTimedOut설정됩니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷은 전송 중에 조각화될 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. DontFragmenttrue 이고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하면 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다.

패킷 또는 패킷 조각은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(IPAddress, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 IPAddress를 사용하는 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, object? userToken);
public void SendAsync (System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)

매개 변수

address
IPAddress

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 IPAddress입니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

address이(가) null인 경우

SendAsync 메서드를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

address이 유효한 IP 주소가 아닌 경우

이 개체가 삭제되었습니다.

예제

메서드 호출을 보여 주는 코드 예제는 SendAsync 클래스 개요를 Ping 참조하세요.

설명

SendAsync 메서드 echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 이 메서드에 대한 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 이벤트가 발생할 때 SendAsync 호출되는 메서드를 지정하려면 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 받 PingCompletedEventArgs 습니다SendAsync. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성은 호출에 userToken 전달된 개체를 SendAsync 포함합니다.

참고

애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우 중 하나를 사용 합니다 Send 메서드, 이러한 메서드는 동기적입니다.

이 메서드는 ICMP 에코 메시지와 함께 32 Byte 데이터 버퍼를 보냅니다. 메서드는 ICMP 에코 응답 메시지에 대해 5초 동안 대기합니다. 해당 시간에 회신을 받지 못하면 메서드가 를 반환하고 속성이 StatusTimedOut설정됩니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷은 전송 중에 조각화될 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. DontFragmenttrue 이고 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하면 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 PacketTooBig됩니다.

패킷 또는 패킷 조각은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 패킷이 지정된 횟수만큼 전달된 후 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정 TtlExpired됩니다.

적용 대상

SendAsync(String, Int32, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

지정된 컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보내고 해당 컴퓨터로부터 이에 대응하는 ICMP Echo Reply 메시지를 받는 작업을 비동기적으로 시도합니다. 이 오버로드를 통해 작업의 시간 제한 값을 지정할 수 있습니다.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)

매개 변수

hostNameOrAddress
String

ICMP Echo 메시지의 대상 컴퓨터를 식별하는 String입니다. 이 매개 변수에 지정된 값은 호스트 이름 또는 IP 주소의 문자열 표현일 수 있습니다.

timeout
Int32

ICMP Echo 메시지를 보낸 후 ICMP Echo Reply 메시지를 기다리는 최대 시간(밀리초)을 지정하는 Int32 값입니다.

userToken
Object

비동기 작업이 완료될 때 호출되는 메서드로 전달되는 개체입니다.

예외

hostNameOrAddressnull이거나 빈 문자열("")인 경우

timeout가 0보다 작은 경우

SendAsync를 호출하고 있는 경우

ICMP 메시지를 보내거나 받는 동안 예외가 throw된 경우. throw된 정확한 예외에 대해서는 내부 예외를 참조하십시오.

hostNameOrAddress의 유효한 IP 주소를 확인할 수 없는 경우

이 개체가 삭제되었습니다.

예제

메서드 호출을 보여 주는 코드 예제는 SendAsync 클래스 개요를 Ping 참조하세요.

설명

SendAsync 메서드 Echo 메시지를 비동기적으로 전송 하 고 애플리케이션 상태를 반환 하는 작업이 완료 되 면 (성공 또는 실패)를 합니다. 호출을 SendAsync 메서드 애플리케이션을 차단 하지 않아야 합니다. 각 호출은 스레드 풀에서 자동으로 할당되는 별도의 스레드에서 실행됩니다. 비동기 작업이 완료되면 이벤트가 발생합니다 PingCompleted . 애플리케이션 사용을 PingCompletedEventHandler 때 호출 되는 방법을 지정 하는 대리자 SendAsync 이벤트를 발생 시킵니다. 를 호출SendAsync하기 전에 이벤트에 대리자를 추가 PingCompletedEventHandler 해야 합니다. 대리자의 메서드는 PingCompletedEventArgs 호출 결과를 설명하는 개체가 PingReply 포함된 개체를 SendAsync 받습니다. 개체는 PingCompletedEventArgs 속성을 상속합니다 UserState . 이 속성에는 호출에 userToken 전달된 개체가 SendAsync 포함됩니다.

사용 하 여 애플리케이션 회신을 기다리는 동안 차단 해야 하는 경우는 Send 메서드, 이러한 메서드는 동기적입니다.

매개 변수로 지정된 timeout 시간 내에 ICMP 에코 회신 메시지를 받지 못하면 ICMP 에코가 실패하고 Status 속성이 로 TimedOut설정됩니다.

참고

timeout대해 매우 작은 숫자를 지정할 때 밀리초가 경과한 경우에도 timeout Ping 회신을 받을 수 있습니다.

이 오버로드는 패킷 조각화 및 패킷 전달에 기본 설정을 사용합니다. 총 패킷 크기가 로컬 및 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 ICMP 에코 메시지를 포함하는 패킷을 전송 중에 조각화할 수 있습니다. 조각화를 방지하려면 매개 변수를 SendAsync 사용하는 options 메서드 중 하나를 사용하고 속성을 true로 설정합니다DontFragment. 가 true 이고 총 패킷 크기가 로컬 컴퓨터와 원격 컴퓨터 간의 라우팅 노드 중 하나에서 전송할 수 있는 최대 패킷 크기를 초과하는 경우 DontFragment ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정됩니다 PacketTooBig. 패킷 또는 패킷 조각(조각화된 경우)은 삭제되기 전에 노드를 128번 라우팅하여 전달할 수 있습니다. 이 설정을 변경하려면 매개 변수를 SendAsync 사용하는 오버로드를 options 사용하고 속성을 원하는 값으로 설정합니다 Ttl . 지정된 횟수를 전달한 후 패킷이 대상에 도달하지 않으면 패킷이 삭제되고 ICMP 에코 요청이 실패합니다. 이 경우 는 Status 로 설정됩니다 TtlExpired.

적용 대상