Saturday, November 5, 2022

Modul 6 : Pertemuan 7 (Socket Programming dengan Multitasking/Forking)

 Arsitektur Client-Server Forking

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. Merupakan cara tradisional untuk menangani multiple clients. Ketika sebuah aplikasi memanggil fork (), maka dibuat copyan dari calling program, sampai ke program counter(PC), dan child process baru dimulai dengan copyan tsb. 

Hasil kembalian dari fork() : sekali dalam program pemanggil dan waktu berikutnya dalam child process. Nilai kembalian dalam program pemanggil adalah PID dari child process baru, sementara dalam child process itu adalah 0.

1.3 Percobaan

Program 1

Server1.py

Client1.py


Hasil Program 

Analisa:
Pada program diatas dia hanya melayani 1 client,  fungsi handle_client nantinya akan mengirimkan pesan “Selamat, anda sudah terhubung” dan fungsi server() dengan inisialisasi variabel i = 1 untuk counter nomor client. Pada percobaan ini juga dibuat looping while untuk counter nomor client jika i <= 10 maka looping selesai. fungsi recv() dan pesan akan di decode lalu menampilkan pesan yang sudah di decode.

Program 2

forking-server.py

forking-client.py


Hasil Program

Analisa:
Pada program diatas dapat menerima semua client. variabel message akan di encode pada variabel encoded_message dengan encoder utf-8. Dan jika variabel message bernilai tidak sama dengan “q” maka client akan send() variabel encoded_message

Program 3

tcp_server_forking.py

tcp_client.py

Hasil Program

Analisa: 

Pada program diatas setiap client yang terkonek memberikan id yang berbeda beda. While True maka akan menjalankan fungsi client_sock.recv() pada variabel data dan jika variabel data kosong atau nilainya sama dengan “END” maka program break atau selesai.

1.4 Latihan

1. Modifikasi program-program tersebut diatas, sehingga dapat mencatat/ menampilkan waktu yang dibutuhkan untuk mengirimkan data dari client

lat1_tcp_server_forking.py

lat1_tcp_client_forking.py

Hasil Program

2. Buatlah program calculator sederhana dengan protokol tcp dimana client mengirimkan soal (cth: 2+2), dan server membalas dengan hasil perhitungan (cth: 4), program client kemudian menampilkan hasil dari server dan siap menerima inputan soal baru. Program client akan berhenti jika menerima inputan cancel. Gunakan forking pada program server agar dapat menangani lebih dari 1 client secara bersamaan.

latihan2_server.py

latihan2_client.py

Hasil Program

3. Buatlah program client dan server menggunakan forking untuk permasalahan berikut: Sebuah perusahaan menggaji pegawai sales berdasarkan komisi. Seorang pegawai sales akan menerima $200/minggu ditambah 9% dari total penjualannya selama seminggu. Contoh: Andi berhasil melakukan penjualan sebesar $3000/minggu, maka total gaji yang diterima tiap minggu = $200 + 9%*$3000 = $470. Program harus menggunakan fungsi calculateSalary untuk menghitung gaji yang diterima oleh setiap pegawai. Client akan mengirimkan informasi nama pegawai, dan total penjualan selama seminggu. Kemudian server akan mengirimkan kembali total gaji yang diterima pegawai. Output disisi client nama pegawai, total penjualan dan total gaji yang diterima pegawai.

lat3_server.py



lat3_client.py

Hasil Program

4. Buatlah kembali program sesuai dengan spesifikasi soal 2 dengan protokol udp.

No comments:

Post a Comment