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)
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)
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:
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:
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()