Multithreading
1.1 Tujuan
1.2 Dasar Teori
Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Forking sebagai salah satu metode penanganan multiple request dari client yang sudah dipelajari sebelumnya memiliki kelemahan, yaitu:
a. Performansi
b. Portability
c. Kompleksitas
Salah satu solusi untuk permasalahan diatas adalah penggunaan thread. Thread berjalan secara paralel dan menggunakan shared memory global. Karena semua thread berjalan dalam proses dan ruang memori yang sama, secara otomatis thread berbagi soket yang lewat di antara mereka. Hal ini serupa dengan cara child process mewarisi deskriptor soket. Namun, tidak seperti proses, thread biasanya lebih murah untuk memulai, dan bekerja pada mesin Unix dan Windows di bawah standar Python.
1.3 Percobaan
Percobaan 1
echo_server_multithread.py
echo_client.py
Hasil Program
Analisa:
Ketika kita coba jalankan programnya, maka pada server akan server langsung mendengarkan dan menghubungkan pada host dan port pada client. Disini server dapat menerima beberapa client yang mana setelah kita run pada client 1 maka ia akan menampilkan teks bahwa client 1 telah terhubung pada host pada 127.0.0.1 dan port 12345, maka pada server langsung tersambung dengan client 1 dengan menampilkan connection from 127.0.0.1, 36944. Begitupun sama dengan Client 2. kita perlu mengimpor modul `threading`, modul threading tingkat tinggi dengan berbagai fitur berguna. Kami menggunakan metode konstruktif `Thread` untuk membuat instance thread. Thread, dalam modul ini, merangkum utas dengan baik, menyediakan antarmuka yang bersih untuk bekerja dengannya. Kemudian kita tambahkan import socket. Lalu, kita memanggil host dengan 'localhost' dan port dengan 12345.
Percobaan 2
chat_server.py
chat_client.py
Analisa :
Nama host server dan port terikat bersama dan terhubung ke soket. Menerima Paket/Pesan dari Server, Untuk menerima pesan, socket_server memanggil fungsi recv() untuk menerima 1024 data. Ini disimpan dalam objek pesan dan diterjemahkan menggunakan fungsi decode(). Pesan tersebut kemudian dicetak dengan nama host server dan pesan diterima.Klien dapat memasukkan pesan apa pun sebagai input dan menyandikannya dan mengirimkannya ke server menggunakan soket.
No comments:
Post a Comment