Sunucuları Bağlanma Hızlarına Göre Sıralama
Geçen gün kurduğum Ubuntu'da ki yazılım kaynakları uygulamasında rastladım böyle bir özelliğe. Paket sunucusu seçme bölümünde "en iyi sunucuyu seç" butonu ile en hızlı sunucu bulunulabiliyor. Python ile buna benzer bir uygulama yapmaya çalıştım. Bir nebze başarılı olduğum söylenebilir. Tabi mantıksal bir hata yapmamış isem.
Sunucular eş zamanlı olarak kontrol edildiğinden, hangi işlem önce tamamlanırsa doğal olarak onun bilgisini ekrana yazdırıyor. Böylelikle ek bir işleme gerek kalmadan sıralama kendiliğinden olmuş oluyor (sanırım). Kodlar aşağıdadır. Bir ufak mola niyetine yazıldı. Unutmak Yok, Hatırlat oldu. Onunla ilgileniyorum. Arayüzü sanırım tamamlarım bu gece. Alpha sürümünü bu hafta tamamlamak istiyorum eğer sınavlardan ve işlerden vakit bulabilirsem. Güç ama, imkansız değil.
# -*- coding: utf-8 -*-
import datetime
import socket
from threading import Thread
class ping(Thread):
def __init__(self,adres,port):
Thread.__init__(self)
self.adres = adres
self.port = port
def run(self):
soket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
zaman = datetime.datetime.now()
baslangic_ms = zaman.microsecond
baslangic_s = zaman.second
if len(str(baslangic_ms))<6:
baslangic = int(str(baslangic_ms) + (str(0) * (6 - len(str(baslangic_ms)))))
else:
baslangic = baslangic_ms
soket.connect((self.adres,self.port))
zaman = datetime.datetime.now()
bitis_ms = zaman.microsecond
bitis_s = zaman.second
bitis = bitis_s - baslangic_s
if bitis<0:
bitis = bitis.__invert__() + 1
bitis *= 999999
if len(str(bitis_ms))<6:
bitis_ms = int(str(bitis_ms) + (str(0) * (6 - len(str(bitis_ms)))))
bitis += bitis_ms
soket.close()
print "%s Erişim Süresi : %d ms." %(self.adres,bitis-baslangic)
except:
print "%s sunucusuna erişilemedi" %(self.adres)
adresler = [
"omerucel.com",
"google.com",
"hotmail.com",
"microsoft.com"
]
for i in adresler:
ping(i,80).start()
Birde wxPython da ayırıcı(splitter) kullanımını araştırırken şöyle bir kaynağa rastladım. Açıklayıcı bir şekilde, çoğu aracın örneği mevcut.