Multithreading
1. 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.
2. PERCOBAAN
a. Percobaan 1
- Server
- Client
- Output
Tugas 1: Amatilah dan analisa pogram diatas, kemudian jelaskan cara kerjanya
Jawab: Pada bagian servernya dilakukan beberapa import yang mana terdapat import threading dan juga import socket. Import thread pada bagian ini akan nerguna untuk menyediakan antar muka yang baik. Lalu juga terdapat HOST nya yaitu 'localhost' dan nantinya kita dapat melakukan pemanggilan host menggunakan 'localhost' dan juga terdapat port = 12345. Pada bagian port ini dapat digunakan kombinasi angka dan jika saat dijalankan tidak bisa muncul outputnya maka port nya dapat diganti. Kemudian pada bagian ini digunakan def yang mana def ini nantinya akan menentukan fungsi untuk thread sehingga saat server menerima pesan maka dia akan mengembalikannya kepada client. Pada bagian def ini digunakan try yang mana jika terhubung maka server akan menampilkan hasilnya namun juga digunakan except yang mana jika tidak dapat terhubung maka akan muncul pesan "socket error" dan saat itu juga terdapat finnaly yang mana jika saat socket error maka koneksi akan tertutup dan terdapat pesan "Closed connection to". Pada bagian server ini juga terdapat listen_sock yang mana nantinya akan membaca host dan port nya lalu saat membaca maka akan muncul pesan "Listening on...". Pada bagian server ini juga terdapat perulangan menggunakan while yang mana nantinya saat client terkoneksi ke server maka akan muncul pesan "Connection From...".
Pada bagian clientnya terdapat import library socket yang mana disini juag terdapat Host , namun berbeda dengan server tadi bagian host disini menggunakan ip "127.0.0.1" dan port nya harus sama dengan server tadi agar dapat saling terhubung. Pada bagian client ini juga digunakan While yang mana terdapat try, saat terkoneksi maka akan muncul beberapa pesan dan juga terdapat if dimana jika menginputkan q maka akan break lalu juga digunakan except jika connection nya error dimana jika terjadi error akan muncul pesan "Socket Error" lalu terjadi break dan terdapat finlly dimana socket nya di close maka akan muncul pesan "Closed connection to server".
Pada percobaan diatas dilakukan connect antara server dan juga client yang mana digunakan 2 client yang terhubung ke server. Pada bagian servernya saat sudah melakukan koneksi, terlebih daulu server membaca host dan juga port dari client yang mana nantinya saat client memcoba koneksi ke server pada bagian server nya akan muncul connection from dari client tersebut, sedangkan pada bagian client terdapat connected to 'server'.
b. Percobaan 2
- Server
- Client
- Output
Tugas 2: Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya
Jawab: Pada bagian server ini dilakukan beberapa import library yang mana terdapat import threading, import socket, import argprse dan import os. Pada programnya terdapat class serber dimana digunkan super. Pada bagian ini juga terdapat def dan juga while. Pada bagian while yang mana nantinya akan dilakukan koneksi antara server dan client akan memunculkan pesan "Accepted a new connection from...to..." dan juga terdapat for dan digunakan juga if. Lalu terdapat def untuk remove connection nya. Pada program server ini juga terdapat class berikutnya untuk server socket yang mana juga digunakan def dan super() lalu juga terdapat while dan if dimana nantinya terdapat beberapa pesan saat client terhubung ke server dan juga terdapat else dimana nantinya akan menutup koneksi nya. Lalu jika keluar dari server juga terdapat while yang mana bisa digunakan q untuk keluarnya dan nantinya akan muncul pesan "Closing all connection" dan juga "Shutting down the server" lalu exit. Pada bagian server ini juga akan terdapat chat room yang mana server dapat menampilkan percakapan antara client.
Pada bagian clientnya juga terdapat import threading, import socket, import argparse dan import os. Pada programnya terdapat class send yang manan ini nantinya akan melakukan send kepada server dimana juga terdapat def dan perulangan while dimana menggunakan if dan else. Jika quit makan akan berhenti dan akan memunculkan pesan "Quitting..." client nya akan close. Lalu juga terdapat class Receive yang mana akan menerimana pesn dari client nya berbeda saat terjadinya pertukaran pesan dimana jiga terdapat while jika berhasil maka akan muncul namun jika tidak berhasil maka digunakan else yang nantinya akan memunculkan pesan "noh no, we have lost connection to the server" yang mana clientnya akan tertutp dengan sendirinya dan memunculkan pesan "Quitting...". Lalu juga terdapat class client yang mana terdapat def start, jika dilakukan percobaan connect ke makan akan muncul pesan "Trying to connect to ..." dan jika berhasil connect maka akan muncul pesan "Successfully connected to ...", lalu kita dapat menginputkan nama dan nantinya setelah menginputkan nama akan muncul pesan "Welcome...! Getting ready to send receive message..." lalu percakapannya dimulai. Jika salah satu mengetikkan quit maka akan langsung keluar dari chat room nya. Saat terjadinya percakapan antara client maka otomatis akan langsung masuk ke server karena sudah terkoneksi.
Pada percobaan diatas dilakukan koneksi antara 2 client ke server yang mana 2 client tersebut melakukan percakapan dan hasil percakapan anatara 2 client tersebut langsung masuk ke dalam server nya.
0 comments:
Post a Comment