Python server client iletişimi

Aynı ağda mısınız? Yoksa farklı ağlarda mı?

Eğer aynı ağdaysanız, server’ın yerel ip adresini yazmanız gerekiyor. Eğer farklı ağlardaysanız, harici ip adresini yerel ip adresinde açtığınız bir port’a yönlendirmeniz gerekiyor.

nasıl yapıcaz hiç bilgimiz yok

Port yönlendirmeyi modem arayüzünü kullanarak yapacaksınız.

bir şey sorucam diğer server kullanan uygulamalrda neden böyle uğraşmıyoruz

Diğer server kullanan uygulamalar derken?

eve online gibi veya dropboxın python ile yaptığı mesajlaşma uyg gibi

Dropbox’ın kendi sunucusu var, istemciler doğrudan dropbox’a bağlanıyor.

biz bir chat uygulaması yapıcaz ama bunu yapamadık bunun için ne yapmamız lazım
yani anladım böyle modem üzerinden uğraşıyoruz ama normal bir kullanıcı bunları yapmak istemez ne yapmalıyız

Dostum normal bir kullanıcıya istemci'yi vereceksiniz zaten. Sunucu sizde kalacak.

haa sunucuyu mu böyle bağlıcaz

Aynen, istemcinin bir şey yapmasına gerek yok. Ancak şöyle bir durum var. Siz modem’e her reset attığınızda ip adresiniz değişecek. Muhtemelen dinamik bir ip kullanıyorsunuz. Bir algoritma geliştirip, istemcinin güncel ip adresine ulaşmasını sağlayabilirsiniz. Veya sabit bir ip adresinizin olması gerekiyor.

1 Beğeni

socket ile uğraşmak bu kadar uğraştırıcımı ya :slightly_frowning_face:

Socket programlamaya giriş için network bilginizin olması gerekiyor görünüşe bakılırsa server-client modelini bile daha tam olarak oturtamamışsınız.

Yapıcı yorumlar yapmaya çalışıyorum sizin yararınıza olduğunu düşündüğümden dolayı önce
Network öğrenin bilgisayarların farklı veya aynı ağda olduklarında nasıl mesajlaştıklarını v.s

1 Beğeni

Onların kendi sunucuları var, biz nasıl www.google.com’a bağlanabiliyorsak o uygulamalar da belli bir sunucuya bağlanıyor. Bir sunucu kiralayarak bunu siz de yapabilirsiniz.

Port yönlendirmeyi router destekliyorsa kod ile de yapabilirsiniz.

1 Beğeni

İstemcinin bağlanması gereken adres aşağıdaki gibi olacak.

client_socket.connect(("harici ip adresi", "port"))

Sabit bir ip adresiniz varsa, host kısmına bu ip adresini yazabilirsiniz. Ancak dinamik bir ip adresini host kısmına yazarsanız, modem resetlendiğinde aynı adrese bir daha bağlanamazsınız. Dolayısıyla eğer dinamik ip adresi kullanacaksanız. Server kısmında şöyle bir şey yapabilirsiniz:

  1. Sunucu her açıldığında mesela github’a güncel ip adresini yükler.
  2. İstemcide bulunan bir kod sayesinde, önce github’a bağlanılır ve güncel ip adresi temin edilir. Daha sonra bu ip adresi kullanılarak sunucuya bağlanılır.

Ancak böyle işlemler için dinamik ip adresi pek kullanılmıyor, statik ipler kullanılıyor.

Tabi önce nasıl yönlendireceğini öğrenmek koşuluyla. Burada da @Asosyal_Futbolcu’nun bahsettiği gibi network bilgisine ihtiyaç duyuluyor.

Kütüphaneler bol. İnternete “python upnp” veya “python port routing” yazınca bir şeyler çıkıyor.

Tabi ki, işte öğrenmeden kastedilen de bu. Bir kaynağı okurken, o kaynak başka bir konuya atıfta bulunabilir, o yeni kaynak okunur, o kaynak konuyla alakalı başka bir ayrıntıya değinir. Bu sefer o ayrıntı araştırılır, öğrenilmeye çalışılır. Yavaş yavaş da olsa, konuyla alakalı bilgileri topladıkça ve zaman içerisinde bilgi sahibi oldukça bazı şeyleri yapmak kolaylaşır.

Anladım. Ama bu protokoller biraz ayrıntıya giriyor, ben özellikle ihtiyacım olmadığı veya bir problem yaşamadığım sürece sadece kütüphaneyi kullanmakla yetinirdim.

Bu yaklaşım da tercih edilebilir. Yani bir network uzmanı olmaya gerek yok, sadece ihtiyaç duyulacak kısımlar da öğrenilebilir. Önemli olan doğru yerde doğru kelimelerle doğru aramayı yapabilmek.

1 Beğeni