Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 17368|Jawab: 0

[Sumber] Server web berbasis HttpListener

[Salin tautan]
Diposting pada 21/12/2015 11.00.26 | | |

Untuk lebih menyederhanakan pendengar untuk protokol HTTP, . .NET menyediakan kelas HttpListener di System.Net namespace. Mengiringi objek ini, . .NET menyediakan serangkaian objek terkait yang merangkum pekerjaan pemrosesan HTTP. Perhatikan bahwa kelas ini menggunakan komponen sistem Http.sys untuk menyelesaikan pekerjaan, sehingga hanya dapat digunakan pada sistem operasi Windows XPSP2 atau Server 2003 atau yang lebih baru.

Kelas HttpListener lebih menyederhanakan operasi mendengarkan, dan hanya perlu memberikan alamat mendengarkan, nomor port, dan jalur virtual melalui metode string untuk memulai pekerjaan mendengarkan.

Setelah mulai mendengarkan, metode GetContext akan memblokir utas, ketika permintaan klien tiba, HttpListener mengembalikan objek HttpListenerContext sebagai proksi umum untuk memproses permintaan klien, melalui properti Request dari objek proxy, kita bisa mendapatkan objek jenis HttpListenerRequest yang mewakili parameter permintaan, objek ini mengobjektifikasi sebagian besar parameter permintaan, jadi , kita bisa mendapatkan parameter permintaan melalui serangkaian properti yang disediakannya. Misalnya, properti HttpMethod dari HttpListenerRequest menyediakan jenis metode yang diminta. Melalui atribut Response proxy, kita dapat memperoleh objek pemrosesan respons jenis HttpListenerResponse, yang merangkum data dan operasi respons, yang sangat menyederhanakan beban kerja pemrograman respons, dan proses kerjanya adalah sebagai berikut:
//检查系统是否支持
jika (! HttpListener.IsSupported)
{
    lempar System baru.InvalidOperationException(
        "Untuk menggunakan HttpListener, Anda harus menggunakan Windows XP SP2 atau Server 2003 atau yang lebih baru!" );
}
Perhatikan bahwa awalan harus diakhiri dengan garis miring / maju
awalan string[] = string baru[] { "http://localhost:49152/" };
Buat pendengar.
HttpListener listener = HttpListener(); baru
Tambahkan awalan monitor.
foreach (string s dalam awalan)
{
    pendengar. Prefixes.Add(s);
}
Mulai mendengarkan
pendengar. Mulai();
Console.WriteLine(" mendengarkan...");
sementara (benar)
{
    Catatan: Metode GetContext akan memblokir utas hingga permintaan tiba
    Konteks HttpListenerContext = pendengar. GetContext();
    Mendapatkan objek permintaan
    Permintaan HttpListenerRequest = konteks. Permintaan;
    Console.WriteLine("{0} {1} HTTP/1.1", permintaan. HttpMethod, permintaan. RawUrl);
    Console.WriteLine("Accept: {0}", string. Gabungkan(",", permintaan. Menerima Jenis));
    Console.WriteLine("Accept-Language: {0}",
        string. Gabungkan(",", permintaan. Bahasa Pengguna));
    Console.WriteLine("User-Agent: {0}", permintaan. Agen Pengguna);
    Console.WriteLine("Accept-Encoding: {0}", permintaan. Headers["Accept-Encoding"]);
    Console.WriteLine("Koneksi: {0}",
        permintaan. KeepAliv e ? "Keep-Alive" : "dekat");
    Console.WriteLine("Host: {0}", permintaan. UserHostName);
    Console.WriteLine("Pragma: {0}", permintaan. Header["Pragma"]);
    Mendapatkan target respons
    Respons HttpListenerResponse = konteks. tanggapan;
    Membuat konten respons
    string responseString
        = @"<html>
                <head><title>Dari Server HttpListener</title></head>
                <body><h1>Halo dunia.</h1></body>
            ";</html>
    Mengatur konten header respons, panjang, pengkodean
    tanggapan. PanjangKonten64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    tanggapan. ContentType = "teks/html; charset = UTF-8";
    Respons keluaran
    Output System.IO.Stream = respons. Aliran Keluaran;
    System.IO.StreamWriter writer = System.IO.StreamWriter baru(keluaran);
    penulis. Write(responseString);
    Aliran keluaran harus dimatikan
    penulis. Tutup();
    if (Console.KeyAvailable)
        istirahat;
}
Matikan server
pendengar. Berhenti();

Saat menggunakan HttpListener, parameter permintaan dan respons yang umum digunakan menjadi properti objek, yang sangat mengurangi beban kerja pemrograman. Namun, sebagian besar parameter masih perlu diakses melalui pengindeks Headers, seperti parameter permintaan Accept-Encoding dalam contoh di atas, yang tidak dapat kita akses langsung melalui properti.




Mantan:File CSS dan file js diikuti oleh tanda tanya
Depan:Hari telah dimulai!! Ayo, semuanya
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com