HttpListener HttpListener HttpListener HttpListener Class

정의

프로그래밍 방식으로 제어되는 간단한 HTTP 프로토콜 수신기를 제공합니다.Provides a simple, programmatically controlled HTTP protocol listener. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class HttpListener sealed : IDisposable
public sealed class HttpListener : IDisposable
type HttpListener = class
    interface IDisposable
Public NotInheritable Class HttpListener
Implements IDisposable
상속
HttpListenerHttpListenerHttpListenerHttpListener
구현

예제

다음 코드 예제는 HttpListener합니다.The following code example demonstrates using a HttpListener.

// This example requires the System and System.Net namespaces.
public static void SimpleListenerExample(string[] prefixes)
{
    if (!HttpListener.IsSupported)
    {
        Console.WriteLine ("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
        return;
    }
    // URI prefixes are required,
    // for example "http://contoso.com:8080/index/".
    if (prefixes == null || prefixes.Length == 0)
      throw new ArgumentException("prefixes");
    
    // Create a listener.
    HttpListener listener = new HttpListener();
    // Add the prefixes.
    foreach (string s in prefixes)
    {
        listener.Prefixes.Add(s);
    }
    listener.Start();
    Console.WriteLine("Listening...");
    // Note: The GetContext method blocks while waiting for a request. 
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response.
    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    System.IO.Stream output = response.OutputStream;
    output.Write(buffer,0,buffer.Length);
    // You must close the output stream.
    output.Close();
    listener.Stop();
}
Public Shared Sub SimpleListenerExample(prefixes As String())
    If Not HttpListener.IsSupported Then
        Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.")
        Return
    End If
    ' URI prefixes are required,
    ' for example "http://contoso.com:8080/index/".
    If prefixes Is Nothing Or prefixes.Length = 0 Then
        Throw New ArgumentException("prefixes")
    End If

    ' Create a listener
    Dim listener = New HttpListener()

    For Each s As String In prefixes
        listener.Prefixes.Add(s)
    Next
    listener.Start()
    Console.WriteLine("Listening...")
    ' Note: The GetContext method blocks while waiting for a request.
    Dim context As HttpListenerContext = listener.GetContext()
    Console.WriteLine("Listening...")
    ' Obtain a response object
    Dim request As HttpListenerRequest = context.Request
    ' Construct a response.
    Dim response As HttpListenerResponse = context.Response
    Dim responseString As String = "<HTML><BODY> Hello world!</BODY></HTML>"
    Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)
    ' Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length
    Dim output As System.IO.Stream = response.OutputStream
    output.Write(buffer, 0, buffer.Length)
    'You must close the output stream.
    output.Close()
    listener.Stop()
End Sub

설명

사용 하는 HttpListener 클래스, HTTP 요청에 응답 하는 간단한 HTTP 프로토콜 수신기를 만들 수 있습니다.Using the HttpListener class, you can create a simple HTTP protocol listener that responds to HTTP requests. 수신기의 수명 동안 활성화 되었는지는 HttpListener 개체 및 해당 권한으로 애플리케이션 내에서 실행 됩니다.The listener is active for the lifetime of the HttpListener object and runs within your application with its permissions.

사용 하 HttpListener를 사용 하 여 클래스의 새 인스턴스를 만들고는 HttpListener 생성자 및 사용 하 여를 Prefixes 속성 액세스는 리소스 URI (Uniform Identifier)를 지정 하는 문자열을 포함 하는 컬렉션에 접두사를 HttpListener처리 해야 합니다.To use HttpListener, create a new instance of the class using the HttpListener constructor and use the Prefixes property to gain access to the collection that holds the strings that specify which Uniform Resource Identifier (URI) prefixes the HttpListener should process.

URI 접두사 문자열을 체계 (http 또는 https), 호스트, 선택적 포트를 및 선택적 경로 구성 됩니다.A URI prefix string is composed of a scheme (http or https), a host, an optional port, and an optional path. 완전 한 접두사 문자열의 예로 http://www.contoso.com:8080/customerData/ 합니다.An example of a complete prefix string is http://www.contoso.com:8080/customerData/. 접두사는 슬래시 ("/")에 종료 해야 합니다.Prefixes must end in a forward slash ("/"). HttpListener 가장 일치 하는 요청된 된 URI 접두사가 포함 된 개체는 요청에 응답 합니다.The HttpListener object with the prefix that most closely matches a requested URI responds to the request. 여러 HttpListener 개체는 동일한 접두사를 추가할 수 없습니다는 Win32Exception 예외가 throw 됩니다는 HttpListener 에 이미 있는 접두사를 사용 하 여 추가 합니다.Multiple HttpListener objects cannot add the same prefix; a Win32Exception exception is thrown if a HttpListener adds a prefix that is already in use.

포트를 지정 하면 호스트 요소 바꿀 수 있습니다 "*" 나타내는 HttpListener 요청된 된 URI에 다른 접두사와 일치 하지 않으면 포트로 전송 요청을 수락 합니다.When a port is specified, the host element can be replaced with "*" to indicate that the HttpListener accepts requests sent to the port if the requested URI does not match any other prefix. 예를 들어, 모든 요청을 수신 하도록 포트 8080에서 요청 된 URI에서 처리 되지 않은 경우에 보낸 HttpListener, 접두사 http://*: 8080 / 합니다.For example, to receive all requests sent to port 8080 when the requested URI is not handled by any HttpListener, the prefix is http://*:8080/. 마찬가지로, 지정 하는 HttpListener 포트에 전송 하는 모든 요청을 수락 "+" 문자를 사용 하 여 호스트 요소를 바꿉니다.Similarly, to specify that the HttpListener accepts all requests sent to a port, replace the host element with the "+" character. 예: https://+:8080.For example, https://+:8080. "*" 및 "+" 문자는 경로 포함 하는 접두사에 있을 수 있습니다.The "*" and "+" characters can be present in prefixes that include paths.

.NET Core 2.0 또는 Windows 10에서.NET Framework 4.6부터, 와일드 카드 하위 도메인에서 관리 하는 URI 접두사에 지원 됩니다는 HttpListener 개체입니다.Starting with .NET Core 2.0 or .NET Framework 4.6 on Windows 10, wildcard subdomains are supported in URI prefixes that are managed by an HttpListener object. 와일드 카드 하위 도메인을 지정 하려면 사용 된 "*" URI 접두사에서 호스트의 일부로 문자.To specify a wildcard subdomain, use the "*" character as part of the hostname in a URI prefix. 예를 들어 http://*.foo.com/ 합니다.For example, http://*.foo.com/. 이에 대 한 인수로 전달 된 Add 메서드.Pass this as the argument to the Add method. .NET Core 2.0 또는 Windows 10에.NET Framework 4.6을 기준으로 작동 이전 버전에서는 이렇게 생성 된 HttpListenerException합니다.This works as of .NET Core 2.0 or .NET Framework 4.6 on Windows 10; in earlier versions, this generates an HttpListenerException.

경고

최상위 와일드 카드 바인딩 (http://*: 8080 / 하 고 http://+:8080) 해야 되지 사용할 합니다.Top-level wildcard bindings (http://*:8080/ and http://+:8080) should not be used. 최상위 와일드카드 바인딩은 보안 취약점에 앱을 노출시킬 수 있습니다.Top-level wildcard bindings can open up your app to security vulnerabilities. 강력한 와일드카드와 약한 와일드카드 모두에 적용됩니다.This applies to both strong and weak wildcards. 와일드카드보다는 명시적 호스트 이름을 사용합니다.Use explicit host names rather than wildcards. 전체 부모 도메인을 제어하는 경우 하위 도메인 와일드카드 바인딩(예: *.mysub.com)에는 이러한 보안 위험이 없습니다(취약한 *.com과 반대임).Subdomain wildcard binding (for example, *.mysub.com) doesn't have this security risk if you control the entire parent domain (as opposed to *.com, which is vulnerable). 자세한 내용은 rfc7230 섹션-5.4를 참조하세요.See rfc7230 section-5.4 for more information.

클라이언트에서 요청을 수신 대기를 시작 하려면 URI 접두사는 추가 수집 및 호출 된 Start 메서드.To begin listening for requests from clients, add the URI prefixes to the collection and call the Start method. HttpListener 클라이언트 요청을 처리 하기 위한 동기 및 비동기 모델을 제공 합니다.HttpListener offers both synchronous and asynchronous models for processing client requests. 요청 및 응답을 통해 액세스 되는 HttpListenerContext 에서 반환 된 개체를 GetContext 메서드 또는 해당 비동기 메서드인 합니다 BeginGetContextEndGetContext 메서드.Requests and their associated responses are accessed using the HttpListenerContext object returned by the GetContext method or its asynchronous counterparts, the BeginGetContext and EndGetContext methods.

모델은 동기 모델과 클라이언트 요청을 대기 하는 동안 애플리케이션을 차단 하 고 한 번에 하나의 요청을 처리 하려는 경우 적합 합니다.The synchronous model is appropriate if your application should block while waiting for a client request and if you want to process only one request at a time. 호출 동기 모델을 사용 하는 GetContext 메서드는 클라이언트 요청을 보낼 때까지 기다립니다.Using the synchronous model, call the GetContext method, which waits for a client to send a request. 메서드는 HttpListenerContext 발생 한 경우 처리에 대 한 개체입니다.The method returns an HttpListenerContext object to you for processing when one occurs.

더 복잡 한 비동기 모델에서 애플리케이션의 실행 스레드에서 자체 처리 되는 요청 및 각 요청을 기다리는 동안 차단 하지 않습니다.In the more complex asynchronous model, your application does not block while waiting for requests and each request is processed in its own execution thread. 사용 된 BeginGetContext 들어오는 각 요청에 대해 호출 되는 애플리케이션 정의 메서드를 지정 하는 방법입니다.Use the BeginGetContext method to specify an application-defined method to be called for each incoming request. 해당 메서드 내에서 호출을 EndGetContext 요청 가져오기, 처리 및 대응 방법입니다.Within that method, call the EndGetContext method to obtain the request, process it, and respond.

모델 중 하나에서 들어오는 요청을 통해 액세스 되는 HttpListenerContext.Request 속성과 나타내는 HttpListenerRequest 개체입니다.In either model, incoming requests are accessed using the HttpListenerContext.Request property and are represented by HttpListenerRequest objects. 마찬가지로, 응답을 통해 액세스 되는 HttpListenerContext.Response 속성과 나타내는 HttpListenerResponse 개체입니다.Similarly, responses are accessed using the HttpListenerContext.Response property and are represented by HttpListenerResponse objects. 이러한 개체와 일부 기능을 공유 합니다 HttpWebRequest 하 고 HttpWebResponse 개체에 있지만 두 번째 개체와 함께에서 사용할 수 없습니다 HttpListener 클라이언트, 없습니다 서버, 동작을 구현 하므로 합니다.These objects share some functionality with the HttpWebRequest and HttpWebResponse objects, but the latter objects cannot be used in conjunction with HttpListener because they implement client, not server, behaviors.

HttpListener 클라이언트 인증을 요구할 수 있습니다.An HttpListener can require client authentication. 인증을 위해 사용 하는 특정 구성표를 지정 하거나 또는 사용할 체계를 결정 하는 대리자를 지정할 수 있습니다.You can either specify a particular scheme to use for authentication, or you can specify a delegate that determines the scheme to use. 특정 형태의 인증 클라이언트의 id에 대 한 정보를 요구 해야 합니다.You must require some form of authentication to obtain information about the client's identity. 자세한 내용은 참조는 User, AuthenticationSchemes, 및 AuthenticationSchemeSelectorDelegate 속성.For additional information, see the User, AuthenticationSchemes, and AuthenticationSchemeSelectorDelegate properties.

참고

만드는 경우는 HttpListener https를 사용 하 여 선택 해야 서버 인증서를 해당 수신기에 대 한 합니다.If you create an HttpListener using https, you must select a Server Certificate for that listener. 그렇지 않은 경우는 HttpWebRequest 이 쿼리 HttpListener 예기치 연결 하지 못합니다.Otherwise, an HttpWebRequest query of this HttpListener will fail with an unexpected close of the connection.

참고

네트워크 셸 (netsh.exe)를 사용 하 여 서버 인증서 및 기타 수신기 옵션을 구성할 수 있습니다.You can configure Server Certificates and other listener options by using Network Shell (netsh.exe). 참조 네트워크 셸 (Netsh) 대 한 자세한 내용은 합니다.See Network Shell (Netsh) for more details. 실행 파일에 Windows Server 2008 및 Windows Vista를 사용 하 여 전달 하기 시작 했습니다.The executable began shipping with Windows Server 2008 and Windows Vista.

참고

에 대 한 여러 인증 체계를 지정 하는 경우는 HttpListener, 수신기에서 다음과 같은 순서로 클라이언트 즐길 수: Negotiate, NTLM, Digest를 차례로 Basic.If you specify multiple authentication schemes for the HttpListener, the listener will challenge clients in the following order: Negotiate, NTLM, Digest, and then Basic.

생성자

HttpListener() HttpListener() HttpListener() HttpListener()

HttpListener 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the HttpListener class.

속성

AuthenticationSchemes AuthenticationSchemes AuthenticationSchemes AuthenticationSchemes

클라이언트를 인증하는 데 사용되는 인증 체계를 가져오거나 설정합니다.Gets or sets the scheme used to authenticate clients.

AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate AuthenticationSchemeSelectorDelegate

클라이언트 인증에 사용되는 프로토콜을 결정하기 위해 호출되는 대리자를 가져오거나 설정합니다.Gets or sets the delegate called to determine the protocol used to authenticate clients.

DefaultServiceNames DefaultServiceNames DefaultServiceNames DefaultServiceNames

등록된 접두사로 확인되는 SPN(서비스 공급자 이름) 기본 목록을 가져옵니다.Gets a default list of Service Provider Names (SPNs) as determined by registered prefixes.

ExtendedProtectionPolicy ExtendedProtectionPolicy ExtendedProtectionPolicy ExtendedProtectionPolicy

세션에 대한 확장 보호에 사용할 ExtendedProtectionPolicy를 가져오거나 설정합니다.Gets or sets the ExtendedProtectionPolicy to use for extended protection for a session.

ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate ExtendedProtectionSelectorDelegate

각 요청에 사용할 ExtendedProtectionPolicy를 확인하기 위해 호출되는 대리자를 가져오거나 설정합니다.Gets or sets the delegate called to determine the ExtendedProtectionPolicy to use for each request.

IgnoreWriteExceptions IgnoreWriteExceptions IgnoreWriteExceptions IgnoreWriteExceptions

Boolean에서 클라이언트에 응답을 보낼 때 발생하는 예외를 애플리케이션에서 받을지 여부를 지정하는 HttpListener 값을 가져오거나 설정합니다.Gets or sets a Boolean value that specifies whether your application receives exceptions that occur when an HttpListener sends the response to the client.

IsListening IsListening IsListening IsListening

HttpListener가 시작되었는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether HttpListener has been started.

IsSupported IsSupported IsSupported IsSupported

현재 운영 체제에서 HttpListener를 사용할 수 있는지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether HttpListener can be used with the current operating system.

Prefixes Prefixes Prefixes Prefixes

HttpListener 개체에서 처리하는 URI(Uniform Resource Identifier) 접두사를 가져옵니다.Gets the Uniform Resource Identifier (URI) prefixes handled by this HttpListener object.

Realm Realm Realm Realm

HttpListener 개체와 연결된 영역(또는 리소스 파티션)을 가져오거나 설정합니다.Gets or sets the realm, or resource partition, associated with this HttpListener object.

TimeoutManager TimeoutManager TimeoutManager TimeoutManager

HttpListener 인스턴스의 시간 초과 관리자입니다.The timeout manager for this HttpListener instance.

UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication UnsafeConnectionNtlmAuthentication

NTLM이 사용될 때 동일한 TCP(Transmission Control Protocol) 연결을 사용하는 추가 요청을 인증해야 하는지 여부를 제어하는 Boolean 값을 가져오거나 설정합니다.Gets or sets a Boolean value that controls whether, when NTLM is used, additional requests using the same Transmission Control Protocol (TCP) connection are required to authenticate.

메서드

Abort() Abort() Abort() Abort()

HttpListener 개체를 즉시 종료하고 현재 큐에 대기 중인 모든 요청을 삭제합니다.Shuts down the HttpListener object immediately, discarding all currently queued requests.

BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object) BeginGetContext(AsyncCallback, Object)

들어오는 요청에 대한 비동기 검색을 시작합니다.Begins asynchronously retrieving an incoming request.

Close() Close() Close() Close()

HttpListener를 종료합니다.Shuts down the HttpListener.

EndGetContext(IAsyncResult) EndGetContext(IAsyncResult) EndGetContext(IAsyncResult) EndGetContext(IAsyncResult)

들어오는 클라이언트 요청을 검색하기 위한 비동기 작업을 완료합니다.Completes an asynchronous operation to retrieve an incoming client request.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetContext() GetContext() GetContext() GetContext()

들어오는 요청을 기다리고 요청을 받으면 반환됩니다.Waits for an incoming request and returns when one is received.

GetContextAsync() GetContextAsync() GetContextAsync() GetContextAsync()

들어오는 요청을 비동기 작업으로 대기합니다.Waits for an incoming request as an asynchronous operation.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
Start() Start() Start() Start()

이 인스턴스에서 들어오는 요청을 받을 수 있도록 합니다.Allows this instance to receive incoming requests.

Stop() Stop() Stop() Stop()

이 인스턴스에서 들어오는 요청의 받기를 중지하도록 합니다.Causes this instance to stop receiving incoming requests.

ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

명시적 인터페이스 구현

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

HttpListener 개체에서 보유한 리소스를 해제합니다.Releases the resources held by this HttpListener object.

적용 대상

추가 정보