Terminal_Chat
Terminal üstünde Chat Yapabileceginiz bir uygulama. Windows yada Linux fark etmeksizin calisir! Uzak mesafeler yada Local Ag icerisinde kullanabilirsiniz! Tamamen Multi Thread ile calisan bir Client yapisi mevcuttur! Yani tek bir Terminal/Komut Istemcisinde hem Yeni gelen mesajlari görebilirsiniz hemde mesajlasmaya devam edebilirsiniz!
Yükleme
Eger uzaktan baglanti olacaksa Güvenlik Duvarinizda Port acmak durumunda kalabilirsiniz! Statik bir IP adressiniz yok ise DynDNS kullanabilirsiniz!
Server Calistirma
python server.py
Client Calistirma
python client.py
Client.py :
#!/bin/python3
import socket
from threading import Thread
HOST = '' # Server IP addressini yada DynDNS giriniz!
PORT = 65432 # Server Portunu belirtiniz!
BUFFERSIZE = 1024
ADDR = (HOST, PORT)
katilimci_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
katilimci_socket.connect(ADDR)
print("Baglanti saglandi! Kendinize bir takma isim belirleyin: ")
def main():
while True:
data = katilimci_socket.recv(BUFFERSIZE)
print("Gelen mesaj: ", str(data.decode('utf8')))
katimci_socket.close()
def mesaj_yaz():
while True:
print("Mesaj giriniz: ")
message = input()
katilimci_socket.send(message.encode("utf8"))
if __name__ == '__main__':
ACCEPT_THREAD = Thread(target=main)
ACCEPT_THREAD2 = Thread(target=mesaj_yaz)
ACCEPT_THREAD.start()
ACCEPT_THREAD2.start()
ACCEPT_THREAD.join()
ACCEPT_THREAD2.join()
Server.py:
#!/bin/python3
import socket
from threading import Thread
katilimcilar = {}
adressler = {}
HOST = '' # Host icin IP veya DynDNS giriniz
PORT = 65432 # Burda Port degistirmek isteyebilirsiniz!
BUFFERSIZE = 1024 # Paket büyüklügü
ADDR = (HOST,PORT)
SERVER = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
SERVER.bind(ADDR)
def gelen_kontrol():
while True:
katilimci, katilimci_adress = SERVER.accept()
print(f"{katilimci_adress} baglandi!")
katilimci.send(bytes("Baglanti saglandi!", "utf8"))
adressler[katilimci] = katilimci_adress
Thread(target=katilimci_baglantisi, args=(katilimci,)).start()
def katilimci_baglantisi(katilimci):
isim = katilimci.recv(BUFFERSIZE).decode("utf8")
msg = "%s baglanti sagladi" %isim
broadcast(bytes(msg, "utf8"))
katilimcilar[katilimci] = isim
while True:
msg = katilimci.recv(BUFFERSIZE)
if msg != bytes("{cikis}", "utf8"):
broadcast(msg, isim+": ")
print(isim, ": ", msg)
else:
katilimci.send(bytes("{cikis}", "utf8"))
katilimci.close()
del katilimcilar[katilimci]
broadcast(bytes("%s cikis yapti" %isim, "utf8"))
break
def broadcast(msg, prefix=""):
for sock in katilimcilar:
sock.send(bytes(prefix, "utf8")+msg)
while True:
SERVER.listen()
print("Baglanti bekleniyor...")
ACCEPT_THREAD = Thread(target=gelen_kontrol)
ACCEPT_THREAD.start()
ACCEPT_THREAD.join()
SERVER.close()
Koddunyam.net %100 ücretsiz bir bilgi paylasim sitesidir! Bilgiyi paylasmak istemeyenler ve kendine saklamak isteyenlerin yeri kesinlikle burasi degildir.
ilk fırsatta bunu denemek ve geliştirmek isterim. böyle kritik bir konuda belkide tek eğitim bu sanırım. özellikle threed konusu detaylandırılmalı. şu günlerde whatsapp ile yaşanılan sorun böyle bir alternatif ihtiyacını gözler önüne sermiştir.
Teşekkürler Başkan...