Menyiapkan Server Internet dengan Python Menggunakan Soket

click fraud protection

Sebagai pelengkap tutorial klien jaringan, tutorial ini menunjukkan cara menerapkan server web sederhana di Python. Yang pasti, ini bukan pengganti Apache atau Zope. Ada juga cara yang lebih kuat untuk mengimplementasikan layanan web di Python, menggunakan modul seperti BaseHTTPServer. Server ini menggunakan modul soket secara eksklusif.

Anda akan ingat bahwa modul soket adalah tulang punggung dari sebagian besar modul layanan web Python. Seperti halnya klien jaringan yang sederhana, membangun server dengannya menggambarkan dasar-dasar layanan web dengan Python secara transparan. BaseHTTPServer sendiri mengimpor modul soket untuk memengaruhi server.

Dengan cara meninjau, Semua transaksi jaringan terjadi antara klien dan server. Dalam sebagian besar protokol, klien meminta alamat tertentu dan menerima data.

Dalam setiap alamat, banyak server dapat berjalan. Batasnya ada di perangkat keras. Dengan perangkat keras yang memadai (RAM, kecepatan prosesor, dll.), Komputer yang sama dapat berfungsi sebagai server web, server ftp, dan

instagram viewer
server surat (pop, smtp, imap, atau semua hal di atas) pada saat yang bersamaan. Setiap layanan dikaitkan dengan port. Port terikat ke soket. Server mendengarkan port yang terkait dan memberikan informasi ketika permintaan diterima pada port tersebut.

Jadi untuk mempengaruhi koneksi jaringan Anda perlu mengetahui host, port, dan tindakan yang diizinkan pada port tersebut. Sebagian besar server web berjalan pada port 80. Namun, untuk menghindari konflik dengan server Apache yang diinstal, server web kami akan berjalan pada port 8080. Untuk menghindari konflik dengan layanan lain, yang terbaik adalah menjaga layanan HTTP pada port 80 atau 8080. Ini adalah dua yang paling umum. Jelas, jika ini digunakan, Anda harus menemukan port terbuka dan mengingatkan pengguna untuk perubahan.

Seperti halnya klien jaringan, Anda harus mencatat bahwa alamat ini adalah nomor port umum untuk berbagai layanan. Selama klien meminta layanan yang benar di port yang tepat di alamat yang benar, komunikasi masih akan terjadi. Google layanan email, misalnya, pada awalnya tidak berjalan pada nomor port umum tetapi, karena mereka tahu cara mengakses akun mereka, pengguna masih bisa mendapatkan email mereka.

Berbeda dengan klien jaringan, semua variabel di server bawaan. Setiap layanan yang diharapkan berjalan terus-menerus seharusnya tidak memiliki variabel dari logika internalnya yang ditetapkan pada baris perintah. Satu-satunya variasi dalam hal ini adalah jika, karena suatu alasan, Anda ingin layanan berjalan sesekali dan pada berbagai nomor port. Namun, jika ini masalahnya, Anda masih dapat menonton waktu sistem dan mengubah binding yang sesuai.

Seperti yang telah disebutkan, server perlu mengetahui host yang akan dikaitkan dan port tempat mendengarkan. Untuk tujuan kami, kami akan memiliki layanan yang berlaku untuk nama host apa pun.

Port, seperti yang disebutkan sebelumnya, akan menjadi 8080. Jadi perhatikan bahwa, jika Anda menggunakan server ini bersama dengan klien jaringan, Anda harus mengubah nomor port yang digunakan program.

Apakah akan meminta informasi atau untuk melayaninya, untuk mengakses Internet, kita perlu membuat socket. Sintaks untuk panggilan ini adalah sebagai berikut:

Dua yang pertama jelas merupakan protokol internet. Apa pun yang bepergian melalui internet dapat diakses dalam keluarga ini. Banyak jaringan masih tidak berjalan di IPv6. Jadi, kecuali Anda tahu sebaliknya, paling aman untuk default ke IPv4 dan gunakan AF_INET.

Sejauh ini, tipe yang paling umum adalah SOCK_STEAM dan SOCK_DGRAM karena mereka berfungsi pada dua protokol IP suite (TCP dan UDP). Tiga yang terakhir ini jauh lebih jarang dan mungkin tidak selalu didukung.

Setelah membuat soket, kita perlu mengatur opsi soket. Untuk objek soket apa pun, Anda dapat mengatur opsi soket dengan menggunakan metode setsockopt (). Sintaksnya adalah sebagai berikut:

Jika kami ingin memberikan umpan balik kepada orang yang memanggil server, kami sekarang dapat memasukkan perintah cetak untuk mengonfirmasi bahwa server sudah aktif dan berjalan.

Setelah menyiapkan server, sekarang kita perlu memberi tahu Python apa yang harus dilakukan ketika permintaan dilakukan pada port yang diberikan. Untuk ini, kami mereferensikan permintaan berdasarkan nilainya dan menggunakannya sebagai argumen dari loop sementara yang persisten.

Ketika permintaan dibuat, server harus menerima permintaan dan membuat objek file untuk berinteraksi dengannya.

Dalam hal ini, server menggunakan port yang sama untuk membaca dan menulis. Oleh karena itu, metode makefile diberi argumen 'rw'. Panjang nol dari ukuran buffer hanya membiarkan bagian file ditentukan secara dinamis.

Kecuali jika kita ingin membuat server aksi tunggal, langkah selanjutnya adalah membaca input dari objek file. Ketika kita melakukan itu, kita harus berhati-hati untuk menghapus input kelebihan spasi.

Permintaan akan datang dalam bentuk tindakan, diikuti oleh halaman, protokol, dan versi protokol yang digunakan. Jika seseorang ingin melayani halaman web, seseorang membagi input ini untuk mengambil halaman yang diminta dan kemudian membaca halaman itu menjadi variabel yang kemudian ditulis ke objek file socket. Fungsi untuk membaca file ke dalam kamus dapat ditemukan di blog.

Untuk membuat tutorial ini sedikit lebih ilustratif tentang apa yang dapat dilakukan seseorang dengan modul socket, kami akan melepaskan bagian server tersebut dan sebagai gantinya menunjukkan bagaimana seseorang dapat meningkatkan penyajian data. Masukkan beberapa baris berikutnya ke dalam program.

Jika seseorang mengirim halaman web, baris pertama adalah cara yang bagus untuk memperkenalkan data ke browser web. Jika ditinggalkan, sebagian besar browser web akan melakukan rendering secara default HTML. Namun, jika seseorang memasukkannya, 'OK' harus diikuti oleh dua karakter baris baru. Ini digunakan untuk membedakan informasi protokol dari konten halaman.

Sintaks dari baris pertama, seperti yang mungkin Anda duga, adalah protokol, versi protokol, nomor pesan, dan status. Jika Anda pernah pergi ke halaman web yang telah pindah, Anda mungkin menerima kesalahan 404. 200 pesan di sini hanyalah pesan afirmatif.

Sisa output hanyalah halaman web yang dipecah menjadi beberapa baris. Anda akan mencatat bahwa server dapat diprogram untuk menggunakan data pengguna dalam output. Baris terakhir mencerminkan permintaan web saat diterima oleh server.

Akhirnya, sebagai tindakan penutupan permintaan, kita perlu menutup objek file dan soket server.

Sekarang simpan program ini dengan nama yang dapat dikenali. Setelah Anda memanggilnya dengan 'python program_name.py', jika Anda memprogram pesan untuk mengonfirmasi bahwa layanan berjalan, ini akan dicetak ke layar. Terminal kemudian akan berhenti. Semua sudah sebagaimana mestinya. Buka browser web Anda dan pergi ke localhost: 8080. Anda kemudian harus melihat output dari perintah tulis yang kami berikan. Harap dicatat bahwa, demi ruang, saya tidak menerapkan penanganan kesalahan dalam program ini. Namun, program apa pun yang dirilis ke 'liar' harus.

instagram story viewer