Python Socket Ve Threading Kaynak Bilen Var mı?

Yalnız bu programın biraz geliştirilmesi gerekiyor. Bir istemci sunucuya bağlandıktan sonra, sunucuda tanımlanmış olan listelere istemcinin girmiş olduğu kullanıcı adı ve oda ismi kaydedilir. İstemci sunucudan çıktığı zaman istemcinin açtığı odanın ismi ve seçmiş olduğu kullanıcı adının bu listelerden silinmesi gerekiyor.

İstemcilerin daha önceden oluşturmuş oldukları kullanıcı adı ve oda isimleri, istemciler sunucuyu terk eder etmez artık siliniyor.
Kodlar:
https://github.com/dildeolupbiten/A-console-chat-program-with-chat-rooms/blob/master/server.py
https://github.com/dildeolupbiten/A-console-chat-program-with-chat-rooms/blob/master/client.py

Edit: Sanırım bir hata var. Bu sefer de mesaj gönderme işlemi engelleniyor.
Edit: Mesaj gönderme işleminin engellenmesi sorunu çözüldü.

1 Beğeni

Her programda bir bug vardır. Siz işinizi riske atmayın. Testlerinizi otomatikleştirin. :slight_smile:

1 Beğeni

Mesela programda şöyle bir bug tespit ettim. Diyelim istemci birden fazla odaya girdi, o zaman yazdığı mesaj girdiği oda sayısı kadar kendisine gönderiliyor. Şimdi düşünüyorum da yazdığım kodlara göre beklenmesi gereken bir sonuç bu. O zaman sonucun böyle olacağını düşünememiştim. Denemelerimi de hep tek bir oda üzerinden yaptım. Aynı odaya girmiş istemciler mesajlaşabiliyorlarsa sorun yoktur diye düşünüyordum. Ama farklı ihtimallerin de gerçekleşip gerçekleşmeyeceğini görmek için denemeler yapınca, başka bir sorun daha açığa çıktı. :smiley: Neyse bir ara bu sorunla ilgileneyim.

Edit: Bu sorun da çözülmüştür. Artık istemci istediği kadar odaya girsin, gönderdiği mesajlar sadece bir kere kendi ekranına yazdırılır. Yukarıdaki kodlar yenilenmiştir.

Düşününce daha birçok sorun ortaya çıkabilir. Aslında uygulamaya başlamadan önce bu gibi senaryoları bir yere açık bir şekilde yazmak gerek. Hatta grafik ve diyagramlar da bu konuda oldukça yardımcı olur. Uygulama başladıktan sonlanıncaya kadar her olasılık çizilir ve yazılırsa, bunlara uygun kod ve testler yazılırsa hatalar en aza indirgenebilir. Teslerin bir faydası da, büyük bir güncelleme yaptığınızda geriye dönüp aynı şeyleri tekrar tekrar test etmemenizdir. İşin içine bu gibi uğraşlar girince aslında anlaşılıyor ki, kodu yazmak o kodu hatasız kılmaktan çok daha kolay. Mühendisliğin programlamadan ayrıldığı nokta da burası sanırım. :slight_smile:

1 Beğeni

Söylediklerinizin tamamına katılıyorum ve üstüne de söz söylememe gerek yok. :slight_smile:

1 Beğeni

GUI uygulaması Windows’ta beklendiği gibi çalışmıyor; program sunucuya bağlanır bağlanmaz bilgisayarı kasmaya başlıyor.

GUI uygulamasının beklendiği gibi çalışmama sebebi tampon değerinin hafıza sınır değerine yakın olmasıymış. Yani program çalışınca ram’de yer kalmıyor. Bu değeri düşürdüğümüz zaman Windows’ta da gayet rahat bir şekilde çalışır duruma gelir.

bu değeri düşürmek python ile mümkünmü yoksa belirli kodlar c ile yapılıp pythonamı entegre edilir?

Tampon değeri 130. satırdaki kodlarda belirtiliyor. Belli bir sınıra kadar bu değer yükseltilebilir ancak bu da bilgisayarda kasılmalara neden oluyor. Zaten bir yerden sonra MemoryError hatası alırız. En son 2 üzeri 31 yazmıştım. 2 üzeri 32 MemoryError hatası veriyordu. Linux’de kasılma olmamıştı ve daha Windows’ta çalıştırmamıştım programı. Windows’ta çalıştırdıktan sonra programın kastığını farkettim ve bu değeri aşağıdaki gibi değiştirdim.

data = j[0].recv(1024 ** 2)

GUI uygulamasında dosya gönderme ve mesaj gönderme işlemleri için ayrı ayrı portlar kullanıldı, böylece dosya gönderirken kullanıcı mesaj yazmak isterse, mesaj verileri dosya verileriyle karışmayacak. Ayrıca programa bir indirme bilgisi çubuğu eklendi. Tespit edebildiğim bugları giderdim, ancak yeni buglar çıkarsa burada paylaşırım. Eğer siz de programı kullanıp, hata tespit ederseniz lütfen bildiriniz.

Kodlar:
https://github.com/dildeolupbiten/A-gui-chat-program/blob/master/tkserver.py
https://github.com/dildeolupbiten/A-gui-chat-program/blob/master/tkclient.py

2 Beğeni

Bir önerim olacak. Bu programı ‘program-tanıtımları’ etiketi ile başka bir konuda paylaşmayı düşünmelisiniz. Böylece program diğer kullanıcılar tarafından daha kolay bulunabilir hale gelecektir. Ayrıca burada bir başka konu ile karışmış bir biçimde.

Tabi, neden olmasın.

1 Beğeni

Çok güzel olmuş eline sağlık :smiley: cidden harika olmuş

Teşekkür ederim, programın eksiği çok ama olsun.

Forkladım projeyi, elimden geldiğince Bir şeyler yaparım :slight_smile: benim için harika olduğunu söyleyebilirim hatta aile içinde kullanmak isterdim böyle bir şeyi. Ayrıca kivy ile de Android e yapılabilir vs. Tekrardan elinize sağlık :slight_smile:

Rica ederim. Valla top sizde artık. :slight_smile: Keyfinize göre değiştirebilirsiniz. Kolay gelsin. Umarım işinize yarar.

1 Beğeni

Hey @_Alparslan_55 , @dildeolupbiten

İsmail hocam burada güzel bir öneride bulundu.Uygulayın lütfen!

Ayriyeten:

  • postu açan kişi orda socket ve threading kaynak önerisi sordu, siz burada kalkmış programınızı tanıtıyorsunuz. Gidiniz programınızı başka yerde tanıtınız kardeşim,program tanıtımları etiketi altında paylaşın. Cidden çorba oldu bu post. Kanatımce bu sorunu yaşayan diğer kullanıcılar içn bu posta bakmak içinden gelmeyecek, adam baksa bile fazla bir şey anlamayacak. Yanılmıyorsam bu forumun amacı
  1. Birisinin yaşadığı sorunları o postu açan adam araştırmış, ama sorunu çözememişse o sorunu çözmeye çalışmak.

  2. Araştırma yapmamış ise araştıracağı kavramları vermek

  3. o da olmuyorsa kavramları verip cevabı da vererek o kişinin hem araştırma yeteneğini geliştirmek , hem de sorununu çözmek.

  4. Adam işgüzarlığına soruyorsa o soruyu cevaplamamak, gerekirse şikayet etmek.

Lütfen sorunu çözme odaklı olun.

Biliyorum, hak yemek istemiyorum şahsen.Sizi takdir ediyorum bu bağlamda @dildeolupbiten .Herkesin sorununu çözmeye çalışıyorsunuz. Takdire şayan. Belki ben 16 , siz ise yaklaşık 32 yaşındasınız. Benim 2 katı. Ama lutfen dikkat edelim.

@dildeolupbiten şahsen sizi seviyorum, sizi tutuyorum. Ama bu postta yapılanlar hoşuma gitmedi, bunu bilin.

Yapacağınız şey:

  1. Sanırım socket i iyi biliyorsunuz.Şu boş postları silip program_tanıtımları etiketi altında paylaşabilirsiniz.

  2. Yardımcı olmaya çalışarak bu adama yardımcı olabilirsiniz. Seçim sizin.

Yanlış bir şey yaptıysam özür diliyorum.

Zafer bayramınızı kutluyorum.

@dildeolupbiten , KPSS de başarılar diliyorum abi.

Kolay gelsin.

Haddinizi bilin!!! Burda reklam yapılmıyor. Güzel bulduğumu yazdım, böyle yapılabilir dedim. Ön yargıda bulunmayınız

Cihat kardeş, seni biraz rahatsız etmişim galiba, kusuruma bakma. İsmail hocamızın önerisini uyguladım zaten. Siz de üslubunuza biraz daha dikkat ederseniz çok daha güzel olur. Başlığı kirletmek amacıyla bunları paylaşmadım, belki paylaştığımız yazılar birilerinin işine yarar diye yazdım. Program aşama aşama bu başlıkta oluştu zaten. Üstelik sadece o program değil, socket ve threading kullanılmış bir kaç tane program var bu başlıkta, basitten biraz daha karmaşığa doğru giden uygulamalar bunlar. Bu başlık üzüm yemek isteyen için güzel bir bağ bence.

1 Beğeni