다음을 통해 공유


UdpClient 클래스

UDP(User Datagram Protocol) 네트워크 서비스를 제공합니다.

네임스페이스: System.Net.Sockets
어셈블리: System(system.dll)

구문

‘선언
Public Class UdpClient
    Implements IDisposable
‘사용 방법
Dim instance As UdpClient
public class UdpClient : IDisposable
public ref class UdpClient : IDisposable
public class UdpClient implements IDisposable
public class UdpClient implements IDisposable

설명

UdpClient 클래스는 동기 블로킹 모드로 연결 없는 UDP 데이터그램을 보내고 받기 위한 간단한 메서드를 제공합니다. UDP는 연결 없는 전송 프로토콜이므로 데이터를 보내고 받기 전에 원격 호스트 연결을 설정할 필요가 없습니다. 그러나 다음의 두 가지 방법 중 하나를 선택하여 기본 원격 호스트를 설정할 수도 있습니다.

  • 원격 호스트 이름과 포트 번호를 매개 변수로 사용하여 UdpClient 클래스의 인스턴스를 만듭니다.

  • UdpClient 클래스의 인스턴스를 만든 다음 Connect 메서드를 호출합니다.

UdpClient에 제공된 Send 메서드 중 하나를 사용하면 원격 장치에 데이터를 보낼 수 있습니다. Receive 메서드를 사용하여 원격 호스트에서 데이터를 받을 수 있습니다.

참고

기본 원격 호스트를 이미 지정한 경우 호스트 이름이나 IPEndPoint를 사용하여 Send를 호출하지 않아야 합니다. 호출하면 UdpClient가 예외를 throw합니다.

또한 UdpClient 메서드를 사용하여 멀티캐스트 데이터그램을 보내고 받을 수도 있습니다. UdpClient를 멀티캐스트 그룹에 등록하려면 JoinMulticastGroup 메서드를 사용합니다. 멀티캐스트 그룹에서 UdpClient의 등록을 해제하려면 DropMulticastGroup 메서드를 사용합니다.

예제

다음 예제에서는 포트 11000에서 호스트 이름 www.contoso.com 사용하여 UdpClient 연결을 설정하고 작은 문자열 메시지를 별도의 두 원격 시스템에 보냅니다. Receive 메서드는 메시지를 받을 때까지 실행을 차단시킵니다. Receive에 전달된 IPEndPoint를 사용하면 응답 호스트의 ID가 표시됩니다.

   ' This constructor arbitrarily assigns the local port number.
   Dim udpClient As New UdpClient(11000)
   Try
      udpClient.Connect("www.contoso.com", 11000)
      
      ' Sends a message to the host to which you have connected.
      Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there?")
      
      udpClient.Send(sendBytes, sendBytes.Length)
      
      ' Sends message to a different host using optional hostname and port parameters.
      Dim udpClientB As New UdpClient()
      udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000)
      
      ' IPEndPoint object will allow us to read datagrams sent from any source.
      Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
      
      ' UdpClient.Receive blocks until a message is received from a remote host.
      Dim receiveBytes As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
      Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
      
      ' Which one of these two hosts responded?
      Console.WriteLine(("This is the message you received " + _
                                    returnData.ToString()))
       Console.WriteLine(("This message was sent from " + _
                                    RemoteIpEndPoint.Address.ToString() + _ 
                                    " on their port number " + _
                                    RemoteIpEndPoint.Port.ToString()))
      udpClient.Close()
      udpClientB.Close()
 
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub 
// This constructor arbitrarily assigns the local port number.
UdpClient udpClient = new UdpClient(11000);
    try{
         udpClient.Connect("www.contoso.com", 11000);

         // Sends a message to the host to which you have connected.
         Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
      
         udpClient.Send(sendBytes, sendBytes.Length);

         // Sends a message to a different host using optional hostname and port parameters.
         UdpClient udpClientB = new UdpClient();
         udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000);

         //IPEndPoint object will allow us to read datagrams sent from any source.
         IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

         // Blocks until a message returns on this socket from a remote host.
         Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); 
         string returnData = Encoding.ASCII.GetString(receiveBytes);
   
         // Uses the IPEndPoint object to determine which of these two hosts responded.
         Console.WriteLine("This is the message you received " +
                                      returnData.ToString());
         Console.WriteLine("This message was sent from " +
                                     RemoteIpEndPoint.Address.ToString() +
                                     " on their port number " +
                                     RemoteIpEndPoint.Port.ToString());

          udpClient.Close();
          udpClientB.Close();
          
          }  
       catch (Exception e ) {
                  Console.WriteLine(e.ToString());
        }
// With this constructor the local port number is arbitrarily assigned.
UdpClient^ udpClient = gcnew UdpClient;
try
{
   udpClient->Connect( "host.contoso.com", 11000 );

   // Send message to the host to which you have connected.
   array<Byte>^sendBytes = Encoding::ASCII->GetBytes( "Is anybody there?" );
   udpClient->Send( sendBytes, sendBytes->Length );

   // Send message to a different host using optional hostname and port parameters.
   UdpClient^ udpClientB = gcnew UdpClient;
   udpClientB->Send( sendBytes, sendBytes->Length, "AlternateHostMachineName", 11000 );

   //IPEndPoint object will allow us to read datagrams sent from any source.
   IPEndPoint^ RemoteIpEndPoint = gcnew IPEndPoint( IPAddress::Any,0 );

   // Block until a message returns on this socket from a remote host.
   array<Byte>^receiveBytes = udpClient->Receive( RemoteIpEndPoint );
   String^ returnData = Encoding::ASCII->GetString( receiveBytes );

   // Use the IPEndPoint object to determine which of these two hosts responded.
   Console::WriteLine( String::Concat( "This is the message you received ", returnData->ToString() ) );
   Console::WriteLine( String::Concat( "This message was sent from ", RemoteIpEndPoint->Address->ToString(), " on their port number ", RemoteIpEndPoint->Port.ToString() ) );
   udpClient->Close();
   udpClientB->Close();
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e->ToString() );
}
// This constructor arbitrarily assigns the local port number.
UdpClient udpClient = new UdpClient();
try {
    udpClient.Connect("www.contoso.com", 11000);

    // Sends a message to the host to which you have connected.
    ubyte sendBytes[] = 
        Encoding.get_ASCII().GetBytes("Is anybody there?");
    udpClient.Send(sendBytes, sendBytes.length);

    // Sends a message to a different host using 
    // optional hostname and port parameters.
    UdpClient udpClientB = new UdpClient();
    udpClientB.Send(sendBytes, sendBytes.length, 
        "AlternateHostMachineName", 11000);

    // IPEndPoint object will allow us to read 
    // datagrams sent from any source.
    IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

    // Blocks until a message returns on this socket
    // from a remote host.
    ubyte receiveBytes[] = udpClient.Receive(remoteIpEndPoint);
    String returnData = Encoding.get_ASCII().GetString(receiveBytes);

    // Uses the IPEndPoint object to determine which of 
    // these two hosts responded.
    Console.WriteLine(("This is the message you received "
        + returnData.ToString()));
    Console.WriteLine(("This message was sent from " 
        + remoteIpEndPoint.get_Address().ToString() 
        + " on their port number " 
        + System.Convert.ToString(remoteIpEndPoint.get_Port())));
    udpClient.Close();
    udpClientB.Close();
}
catch (System.Exception e) {
    Console.WriteLine(e.ToString());
}

.NET Framework 보안

  • SocketPermission  나가는 연결을 설정하거나 들어오는 요청을 받아들이는 데 필요한 권한입니다.

상속 계층 구조

System.Object
  System.Net.Sockets.UdpClient

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

UdpClient 멤버
System.Net.Sockets 네임스페이스
TcpClient 클래스

기타 리소스

TCP/UDP