Cara menggunakan python socket web server

Yoo kawan-kawan Otaku-It disini mimin mau membagi tutorial yaitu membuat program server client dengan menggunakan multithreading. pertama apasih multithreading itu? multithreading adalah kemampuan memproses data secara bersamaan nah fungsinya yang biasanya kawan-kawan temui seperti chat ketika berada didalam game dimana server menerima sebuah data/ pesan dari pemain1 dan peman lainya secara bersamaan. Nah langsung saja yuk cek diwabah ini:
jika masih belum mengerti untuk python server client baca disini

server:

import socket
import _thread

print("Wellcome to Otaku-ITCHAT")
s = socket.socket()
host = "192.168.0.123" # ini merupakan ip dari si server yang akan digunakan
port = 12345

s.bind((host, port))
s.listen(5)

def server(con, addr):
    while True:
        data = con.recv(1024)
        if not data:
            break
        print(addr[0] + ":" + str(addr[1]) + " " +data.decode())

while True:
    conn, addr = s.accept()
    _thread.start_new_thread(server, (conn,addr)) #fungsi ini digunakan untuk membuat thread baru
s.close()


client:

import socket

name = input("Input your username:")
while True:
    s = socket.socket()
    host = "192.168.0.123"
    port = 12345
    s.connect((host, port))
    msg = input("Msg: ")
    s.send((name + ": " + msg).encode())
    s.close()



maka hasilnya seperti berikut:

Cara menggunakan python socket web server


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

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

02 dari 10

Menjalankan Server

Dengan cara peninjauan, Semua transaksi jaringan terjadi antara klien dan server. Dalam kebanyakan 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 server mail (pop, smtp, imap, atau semua yang di atas) semua pada saat yang bersamaan. Setiap layanan diasosiasikan dengan port. Port terikat ke soket. Server mendengarkan port yang terkait dan memberikan informasi ketika permintaan diterima pada port tersebut.

03 dari 10

Berkomunikasi Via Soket

Jadi untuk mempengaruhi koneksi jaringan, Anda perlu mengetahui host, port, dan tindakan yang diizinkan pada port itu. Kebanyakan 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. Tentunya, jika ini digunakan, Anda harus menemukan port terbuka dan memberi tahu pengguna tentang perubahan tersebut.

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

Tidak seperti klien jaringan, semua variabel di server sudah dipasangi kabel. Setiap layanan yang diharapkan untuk berjalan secara konstan seharusnya tidak memiliki variabel dari logika internalnya yang ditetapkan pada baris perintah. Satu-satunya variasi dalam hal ini adalah jika, untuk alasan tertentu, Anda ingin layanan dijalankan sesekali dan pada berbagai nomor port. Namun, jika ini kasusnya, Anda masih bisa melihat waktu sistem dan mengubah binding yang sesuai.

Jadi satu-satunya impor kami adalah modul soket.

> soket impor

Selanjutnya, kita perlu mendeklarasikan beberapa variabel.

04 dari 10

Host dan Port

Seperti yang telah disebutkan, server perlu mengetahui host yang akan dihubungkan dan port yang akan didengarkan. Untuk tujuan kita, kita akan memiliki layanan berlaku untuk nama host sama sekali.

> host = '' port = 8080 Port, seperti yang disebutkan sebelumnya, akan menjadi 8080. Perhatikan bahwa, jika Anda menggunakan server ini bersama dengan klien jaringan, Anda harus mengubah nomor port yang digunakan dalam program itu.

05 dari 10

Membuat Socket

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

>= socket.socket (,)

Keluarga soket yang diakui adalah:

  • AF_INET: protokol IPv4 (baik TCP dan UDP)
  • AF_INET6: protokol IPv6 (baik TCP dan UDP)
  • AF_UNIX: protokol domain UNIX
Dua yang pertama jelas merupakan protokol internet. Apa pun yang melakukan perjalanan melalui internet dapat diakses di keluarga-keluarga ini. Banyak jaringan masih tidak berjalan di IPv6. Jadi, kecuali Anda tahu yang lain, paling aman untuk secara default menggunakan IPv4 dan menggunakan AF_INET.

Jenis soket mengacu pada jenis komunikasi yang digunakan melalui soket. Kelima jenis soket adalah sebagai berikut:

  • SOCK_STREAM: aliran byte berorientasi koneksi, TCP
  • SOCK_DGRAM: Transfer datagram UDP (paket IP mandiri yang tidak bergantung pada konfirmasi klien-server)
  • SOCK_RAW: soket mentah
  • SOCK_RDM: untuk datagram yang andal
  • SOCK_SEQPACKET: transfer catatan berurutan melalui koneksi
Sejauh ini, jenis yang paling umum adalah SOCK_STEAM dan SOCK_DGRAM karena mereka berfungsi pada dua protokol dari IP suite (TCP dan UDP). Tiga yang terakhir jauh lebih jarang dan mungkin tidak selalu didukung.

Jadi mari kita membuat soket dan menetapkannya ke variabel.

> c = socket.socket (socket.AF_INET, socket.SOCK_STREAM)

06 dari 10

Pengaturan Opsi Soket

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

socket_object.setsockopt (level, option_name, value) Untuk keperluan kami, kami menggunakan baris berikut: > c.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

Istilah 'level' mengacu pada kategori opsi. Untuk opsi tingkat-soket, gunakan SOL_SOCKET. Untuk nomor protokol, seseorang akan menggunakan IPPROTO_IP. SOL_SOCKET adalah atribut konstan dari soket. Tepatnya opsi mana yang tersedia sebagai bagian dari setiap level ditentukan oleh sistem operasi Anda dan apakah Anda menggunakan IPv4 atau IPv6.

Dokumentasi untuk Linux dan sistem Unix yang terkait dapat ditemukan dalam dokumentasi sistem. Dokumentasi untuk pengguna Microsoft dapat ditemukan di situs web MSDN. Pada tulisan ini, saya belum menemukan dokumentasi Mac pada pemrograman socket. Karena Mac secara kasar didasarkan pada BSD Unix, kemungkinan untuk menerapkan opsi yang lengkap.

Untuk memastikan kegunaan soket ini, kami menggunakan opsi SO_REUSEADDR. Seseorang dapat membatasi server untuk hanya berjalan di port terbuka, tetapi itu sepertinya tidak perlu. Namun, perhatikan bahwa jika dua atau lebih layanan diterapkan pada port yang sama, maka efeknya tidak dapat diprediksi. Seseorang tidak dapat memastikan layanan mana yang akan menerima paket informasi mana.

Akhirnya, '1' untuk nilai adalah nilai dimana permintaan pada soket diketahui dalam program. Dengan cara ini, sebuah program dapat mendengarkan pada soket dengan cara yang sangat bernuansa.

07 dari 10

Mengikat Port ke Socket

Setelah membuat soket dan mengatur pilihannya, kita perlu mengikat port ke soket.

> c.bind ((host, port))

Pengikatan dilakukan, kita sekarang memberitahu komputer untuk menunggu dan mendengarkan pada port itu.

> c.listen (1)

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

08 dari 10

Menangani Permintaan Server

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

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

> sementara 1: csock, caddr = c.accept () cfile = csock.makefile ('rw', 0)

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

09 dari 10

Mengirim Data ke Klien

Kecuali kita ingin membuat server aksi tunggal, langkah selanjutnya adalah membaca masukan dari objek file. Ketika kita melakukan itu, kita harus berhati-hati untuk menghapus masukan dari ruang kosong yang berlebihan.

> line = cfile.readline (). strip ()

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

Untuk membuat tutorial ini sedikit lebih menggambarkan apa yang dapat dilakukan dengan modul soket, kami akan mengabaikan bagian dari server dan sebagai gantinya menunjukkan bagaimana seseorang dapat memberikan nuansa presentasi data. Masukkan beberapa baris berikutnya ke dalam program.

> cfile.write ('HTTP / 1.0 200 OK \ n \ n') cfile.write ('Selamat datang% s!'% (str (caddr) )) cfile.write ('Ikuti tautan ...') cfile.write ('Semua server harus lakukan adalah') cfile.write ('untuk mengirimkan teks ke socket. ') cfile.write (' Ini mengirimkan kode HTML untuk sebuah tautan, ') cfile.write (' dan browser web mengubahnya.


') cfile.write ( 'Klik saya!') cfile .write ('

Kata-kata permintaan Anda adalah: "% s"'% (line)) cfile.write (' ')

10 dari 10

Analisis Akhir dan Shutting Down

Jika seseorang mengirim halaman web, baris pertama adalah cara yang bagus untuk memperkenalkan data ke browser web. Jika dibiarkan keluar, sebagian besar browser web akan menjadi default untuk rendering 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, karena Anda mungkin bisa menduga, adalah protokol, versi protokol, nomor pesan, dan status. Jika Anda pernah pergi ke halaman web yang telah pindah, Anda mungkin telah menerima kesalahan 404. Pesan 200 di sini hanyalah pesan afirmatif.

Sisa output hanyalah sebuah 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 seperti yang diterima oleh server.

Apa yang dimaksud dengan socket pada python Network Programming?

Jelaskan apa yang dimaksud dengan socket pada python network programming ? Penggunaan socket programming memungkinkan adanya komunikasi antara client dan server. Salah satu contoh sederhana penggunaan socket programming adalah pembuatan program untuk chatting.

Apa itu server socket?

ServerSocket, class ini merupakan ciri khas bahwa class tersebut diperuntukkan untuk server. Ketika client tidak membutuhkan class tersebut. Socket adalah sebuah class yang digunakan baik oleh client/server, instance dari class ini adalah nilai balik dari methode accept() yang dimiliki oleh class ServerSocket.

Dimana Python digunakan?

Python adalah bahasa pemrograman yang banyak digunakan dalam aplikasi web, pengembangan perangkat lunak, ilmu data, dan machine learning (ML). Developer menggunakan Python karena efisien dan mudah dipelajari serta dapat dijalankan di berbagai platform.

Apa penggunaan Python?

Apa Saja Kegunaan dan Fungsi Python? Beberapa penggunaan bahasa pemrograman Python yang paling umum mencakup web development, automasi, software testing, analisis data, machine learning, dan game development.