Giter Site home page Giter Site logo

chatting-gui's Introduction

Chatting App with GUI (Python)

Sebuah aplikasi chatting dengan tampilan GUI dan menggunakan bahasa pemograman python.

Penjelasan

  • Client
1. Impor modul:
   - `socket`: Digunakan untuk komunikasi jaringan menggunakan soket.
   - `threading`: Digunakan untuk mengatur thread terpisah untuk tugas-tugas yang berbeda.
   - `tkinter`: Modul GUI bawaan Python.
   - `tkinter.scrolledtext`: Digunakan untuk membuat area teks yang dapat di-scroll di GUI.
   - `simpledialog` dari tkinter: Digunakan untuk memunculkan dialog sederhana untuk memasukkan nickname.

2. Mendefinisikan HOST dan PORT:
   - `HOST = '127.0.0.1'`: Menetapkan alamat loopback IP (localhost) sebagai host.
   - `PORT = 9090`: Menetapkan nomor port yang akan digunakan untuk koneksi soket.

3. Kelas Client:
   - Metode `__init__(self, host, port)`: Inisialisasi objek client. Membuka koneksi soket ke server, meminta pengguna untuk memasukkan nickname melalui dialog, dan memulai dua thread terpisah untuk GUI dan menerima pesan.
   
   - Metode `gui_loop(self)`: Mengatur tampilan GUI menggunakan Tkinter. Ini mencakup label, area teks untuk pesan chat, area masukan, dan tombol kirim. Metode ini juga mengatur jendela utama Tkinter dan menangani penutupannya.
   
   - Metode `write(self)`: Mengirim pesan yang ditulis oleh pengguna melalui soket ke server. Mengambil isi dari area masukan, menyimpannya dalam format pesan yang sesuai, dan mengirimkannya melalui soket.
   
   - Metode `stop(self)`: Menutup koneksi soket, menghentikan aplikasi, dan menutup jendela GUI.
   
   - Metode `receive(self)`: Menerima pesan dari server secara terus-menerus. Jika pesan yang diterima adalah 'NICK', mengirim nickname pengguna ke server. Jika bukan, menampilkan pesan tersebut di area teks GUI.

4. Membuat objek Client:
   - Membuat objek client dengan menggunakan HOST dan PORT yang telah ditentukan sebelumnya.
  • server
1. Impor modul:
   - `socket`: Digunakan untuk komunikasi jaringan menggunakan soket.
   - `threading`: Digunakan untuk mengatur thread terpisah untuk klien yang terhubung.

2. Mendefinisikan HOST dan PORT:
   - `HOST = '127.0.0.1'`: Menetapkan alamat loopback IP (localhost) sebagai host.
   - `PORT = 9090`: Menetapkan nomor port yang akan digunakan untuk koneksi soket.

3. Membuat soket server:
   - `server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)`: Membuat objek soket menggunakan alamat IPv4 (AF_INET) dan protokol TCP (SOCK_STREAM).
   - `server.bind((HOST, PORT))`: Mengikat (bind) soket ke alamat dan port yang ditentukan.
   - `server.listen()`: Mengaktifkan soket server untuk menerima koneksi.

4. Membuat daftar klien dan daftar nickname:
   - `clients = []`: Daftar untuk menyimpan objek soket klien yang terhubung.
   - `nicknames = []`: Daftar untuk menyimpan nickname dari setiap klien yang terhubung.

5. Metode `broadcast(message)`: Mengirim pesan ke semua klien yang terhubung. Metode ini akan mengirim pesan ke setiap objek soket klien dalam daftar `clients`.

6. Metode `handle(client)`: Menangani pesan yang diterima dari klien tertentu. Metode ini akan menerima pesan dari klien, mencetak pesan beserta nickname klien yang mengirimnya, dan mengirim pesan tersebut ke semua klien yang terhubung menggunakan metode `broadcast()`. Jika ada kesalahan dalam menerima pesan, seperti koneksi terputus, klien akan dihapus dari daftar `clients` dan nickname klien juga akan dihapus dari daftar `nicknames`.

7. Metode `receive()`: Menunggu koneksi baru dari klien. Metode ini akan menerima koneksi baru menggunakan metode `accept()` pada soket server. Setelah koneksi diterima, nickname klien akan diminta dan disimpan dalam daftar `nicknames`. Objek soket klien juga akan disimpan dalam daftar `clients`. Selanjutnya, pesan bergabung akan dikirim ke semua klien menggunakan metode `broadcast()`. Metode ini juga memulai thread terpisah untuk menangani pesan dari klien yang terhubung dengan memanggil metode `handle()`.

8. Membuat objek server:
   - `print("Server telah jalan")`: Menampilkan pesan bahwa server telah berjalan.
   - `receive()`: Memulai menerima koneksi dari klien menggunakan metode `receive()`.

Usage

  • Buka CMD/PowerShell/Terminal

App Screenshot

App Screenshot

App Screenshot

  • Ketik dan input cd D:\Coding\Python\chatting-GUI

App Screenshot

  • Sesuaikan D:\Coding\Python\chatting-GUI dengan tempat anda menyimpan file

  • Ketik dan input py server.py hingga sesuai pada foto di bawah

App Screenshot

  • Buka window/tab baru CMD/Terminal/PowerShell

  • Ketik dan input cd D:\Coding\Python\chatting-GUI

  • Sesuaikan D:\Coding\Python\chatting-GUI dengan tempat anda menyimpan file

  • Ketik dan input py client.py maka akan muncul window baru

App Screenshot

  • Ketik nama anda, lalu tekan oke

App Screenshot

App Screenshot

  • Lakukan step 5 - 9 sekali lagi maka aplikasi chatting anda siap di gunakan

App Screenshot

chatting-gui's People

Contributors

aryaintrnnn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.