• Tidak ada hasil yang ditemukan

Python Server Implementation for Multi-Client Communication

N/A
N/A
asmiati as

Academic year: 2024

Membagikan "Python Server Implementation for Multi-Client Communication"

Copied!
5
0
0

Teks penuh

(1)

1. server import socket import threading

# Konfigurasi server

HOST = '127.0.0.1'  # IP lokal PORT = 12345        # Port  server

# Membuat socket server

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((HOST, PORT))

server.listen(5)

print(f"Server berjalan di {HOST}:{PORT}")

clients = {}  # Menyimpan klien dengan format {port: socket}

def send_to_port(port, message):

    """Mengirim pesan ke klien tertentu berdasarkan port."""

    client_socket = clients.get(port)     if client_socket:

        try:

      client_socket.send(message.encode())       print(f"Pesan terkirim ke port {port}")         except:

      print(f"Gagal mengirim pesan ke port {port}")       client_socket.close()

      del clients[port]

    else:

        print(f"Klien dengan port {port} tidak ditemukan.")

def broadcast(message, sender_port=None):

    """Mengirim pesan ke semua klien kecuali pengirim."""

    for port, client_socket in clients.items():

        if port != sender_port:

      try:

      client_socket.send(message)       except:

      client_socket.close()       del clients[port]

def handle_client(client_socket, client_address):

    """Menangani pesan dari klien."""

    client_port = client_address[1]

    clients[client_port] = client_socket

    print(f"Klien dari port {client_port} terhubung.")     broadcast(f"Klien dari port {client_port} telah bergabung.".encode(), sender_port=client_port)

(2)

    while True:

        try:

      message = client_socket.recv(1024)       if message:

      print(f"Client {client_port}: {message.decode()}")       broadcast(f"Client {client_port}:

{message.decode()}".encode(), sender_port=client_port)         except:

      print(f"Klien dari port {client_port} terputus.")       client_socket.close()

      del clients[client_port]

      broadcast(f"Klien dari port {client_port} telah keluar.".encode())

      break

def admin_input():

    """Fungsi untuk membaca input dari admin server."""

    while True:

        admin_message = input("Server: ")

        broadcast(f"[SERVER]: {admin_message}".encode())

# Menerima koneksi klien def accept_clients():

    while True:

        client_socket, client_address = server.accept()         thread = threading.Thread(target=handle_client, args=(client_socket, client_address))

        thread.start()

# Membuat thread untuk menerima klien dan input admin thread_accept = threading.Thread(target=accept_clients) thread_accept.start()

thread_admin = threading.Thread(target=admin_input) thread_admin.start()

2. client 1

3. import socket 4. import threading 5.

6. # Konfigurasi client

7. HOST = '127.0.0.1'  # IP server 8. PORT = 12345        # Port server 9.

10. # Membuat socket client

11. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

(3)

12. client.connect((HOST, PORT)) 13.

14. def receive_messages():

15.     """Menerima pesan dari server."""

16.     while True:

17.         try:

18.       message = client.recv(1024) 19.       if message:

20.       print(message.decode()) 21.         except:

22.       print("Koneksi ke server terputus.") 23.       client.close()

24.       break 25.

26. def send_messages():

27.     """Mengirim pesan ke server."""

28.     while True:

29.         message = input("Client1: ") 30.         client.send(message.encode()) 31.

32. # Membuat thread untuk menerima dan mengirim pesan

33. thread_receive = threading.Thread(target=receive_messages) 34. thread_receive.start()

35.

36. thread_send = threading.Thread(target=send_messages) 37. thread_send.start()

38.

3. client 2

import socket import threading

# Konfigurasi client

HOST = '127.0.0.1'  # IP server PORT = 12345        # Port server

# Membuat socket client

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT))

def receive_messages():

    """Menerima pesan dari server."""

    while True:

        try:

      message = client.recv(1024)       if message:

(4)

      print(message.decode())         except:

      print("Koneksi ke server terputus.")       client.close()

      break

def send_messages():

    """Mengirim pesan ke server."""

    while True:

        message = input("Client2: ")         client.send(message.encode())

# Membuat thread untuk menerima dan mengirim pesan

thread_receive = threading.Thread(target=receive_messages) thread_receive.start()

thread_send = threading.Thread(target=send_messages) thread_send.start()

4. client 3

import socket import threading

# Konfigurasi client

HOST = '127.0.0.1'  # IP server PORT = 12345        # Port server

# Membuat socket client

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT))

def receive_messages():

    """Menerima pesan dari server."""

    while True:

        try:

      message = client.recv(1024)       if message:

      print(message.decode())         except:

      print("Koneksi ke server terputus.")       client.close()

      break

def send_messages():

    """Mengirim pesan ke server."""

    while True:

(5)

        message = input("Client3: ")         client.send(message.encode())

# Membuat thread untuk menerima dan mengirim pesan

thread_receive = threading.Thread(target=receive_messages) thread_receive.start()

thread_send = threading.Thread(target=send_messages) thread_send.start()

Referensi

Dokumen terkait