1. sayfa
recv yapmadan önce client tarafında connect ile server a bağlanman lazım. |
@controller_ Başka bir hata alıyorum şuan. Sizin yazdığınız çözüm gerçekten harikaydı ama şuan bu forumun konusunu değiştirdim. Çünkü farklı bir hata alıyorum. Bu yeni hata hakkında bir düşünceniz var mı? |
@controller_ bu sorun hakkında bir düşünceniz var mı acaba? Çünkü sanırım siz socket modülünden iyi anlıyorsunuz. Yardımcı olursanız sevinirim |
Arkadaşlar sorumu okuyor fakat cevap vermiyorsunuz. Eğer bir kısmı eksik bıraktıysam beni uyarın. Ama sorunumu güzel bir şekilde anlatabildiysem (ki böyle sanıyorum) lütfen cevap yazın. Konu acil. Bu projeyi yakın bir tarihe kadar yetiştirmem lazım. Bilenler lütfen yardımcı olabilir mi? |
Sakin ol şampiyon! bu akşam bi bakmaya çalışırım. Ben python kullanmıyorum, o yüzden kodlar bana yabancı. C++ olsaydı hemen yapardım ![]() |
@pikafaresi problem şu ki, dosyaları gönderen taraf doyaları tek tek okuyup soketten arka arkaya gönderiyor ama dosyaları alan taraf gönderilen dosyaların nerede başlayıp nerede bittiğini bilmediği için gelen tüm veriyi tek bir dosyaya yazıyor. Yani sen aslında tüm dosyaların içindeki veriyi alıyorsun ama diske yazarken tüm bilgiyi tek bir dosyaya yazıyorsun. Yöntemi biraz değiştirmen lazım. Mesela dosya adını gönderirken dosyanın boyutunu da okuyup gönderebilirsin. Böylede alıcı taraf dosya boyutu kadar veriyi aldığı zaman dosyayı kapatır ve sonraki gelen dosya için diskte yeni bir dosya oluşturur. |
@controller_ Söylediğiniz şeyler için çok teşekkür ederim. Acaba dosyanın boyutunu nasıl yollarım? Nasıl bir yöntem uygulayabilirim? |
@controller_ Gelen fotoğrafın boyutu ile giden fotoğrafın boyutu aynı. Sizin dediğiniz gibi olsa giden tüm fotoğrafların boyutu ile gelen fotoğrafın boyutu aynı olmaz mıydı? |
@controller_ Uzun lafın kısası Python hakkında özel bir eğitim almadığım için nasıl bir kod yazacağımı bilemiyorum. Sizce nasıl bir kod işimi görür? |
@pikafaresi ben python kullanmıyorum, sende nasıl çalışıyor bilmiyorum ama bende tüm veriyi tek dosyaya yazıyor. Bu çoklu dosya transferi o kadar kolay değil aslında, bir protokol belirlemen ve server ile client ı senkron çalıştırman lazım.import socket import socket Bu kod bende çalışıyor. Header kısmına doya ismiyle birlikte dosyanın boyutunu da ekledim. Böylece client kaç byte okuyacağını biliyor. Ayrıca sonraki dosyaya geçmeden önce de server taraf client tan dummy bir sinyal bekliyor, böylece senkronizasyon sağlanmış oluyor. Dediğim gibi ben python cu değilim, benim alanım farklı olduğu için bana saçma sapan geliyor. PS: bu arada dosya sayısını elle girmişsin (şu an bende 3) bu da iyi bir alışkanlık değil, bu şekilde çok hataya düşersin. |
@controller_ Sizin sayenizde sorunu çözdüm. Gerçekten çok teşekkür ederim. Merak ediyorum, python bilmediğiniz halde nasıl pythonda bu kadar güzel kod yazabiliyorsunuz? |
@pikafaresi rica ederim ![]() Birincisi kod güzel değil ![]() ![]() İkincisi, burada önemli olan programlama dilini bilmek değil, işin nasıl yapılacağını bilmek. İşin nasıl yapılacağını biliyorsanız dil sadece bir araçtır, o yüzden hızlı bir şekilde çözümünüzü istediğiniz dile port edebilirsiniz. |
@controller_ Bence kodunuz gayet net bir kod olmuş. Size gerçekten çok teşekkür ederim. Bu söylediğiniz sözü de asla unutmayacağım. |
@controller_ Bu kodda bir hata almaya başladım: UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 6: ordinal not in range(128) Kodu her çalıştırdığımda böyle oluyor. Sebebi nedir sizce? |
@pikafaresi daha önce söylediğim gibi yukarıdaki kod iyi bir kod değil. Siz bunu nerede kullanıyorsunuz bilmiyorum, pratik için mi? ödev mi? yoksa gerçekten bir prod ortamı mı? Şunu söyleyeyim yukarıdaki kod kesinlikle prod ortamında kullanılacak bir kod değil. Bir sürü eksiği var. Ben sadece kodu işlevsel hale getirdim ama şahsen ben kendi projemde bu kodu kullanmam. |
@controller_ Python ' ı internetteki pdflerden, videolardan vs. öğrendim. Bu nedenle çok iyi bir kod yazamıyorum. Bu açıdan özür dilerim. Kendimi bu konuda geliştireceğim. Sorunu da halledebildim zaten. Size tekrar tekrar teşekkür ediyorum. :D |
1. sayfa
Arkadaşlar merhaba yeniden. Hatayı düzenliyorum çünkü bana yardımcı olanlar sayesinde sorunu çözmeme rağmen başka bir sorun ile karşılaştım. Lütfen yardımcı olun.
Şimdi, önce kodun nasıl çalışması gerektiğini anlatayım:
Kod, gerekli fotoğrafları alıp anasayfada bunları gösterir.
Ama ilk fotoğrafı aldıktan sonra diğerlerini alamıyorum.
LÜTFEN YARDIMCI OLUN
Dosyaları atan kod:
import socket
import os
import glob
import time
import pathlib
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 23451))
s.listen(20)
print("bağlantı bekleniyor...")
con, addr = s.accept()
print("bir bağlantı kabul edildi")
os.chdir("c:/users/arzuinci/desktop/program_dosyaları/dosyalar")
i = 0
while i < 6:
try:
dosyalar = glob.glob('*.jpg') + glob.glob('*.png') + glob.glob('*.gif')
print(dosyalar)
path = pathlib.Path(dosyalar)
print(path.stem.encode())
con.send(path.stem.encode())
f = open(dosyalar, "rb")
data = f.read()
con.send(data)
f.close()
print("Dosya gönderildi.")
print(dosyalar)
i += 1
except socket.error as msg:
print("Hata:",msg)
______________________________
Dosyaları alan kod:
def fotograflari_al(self):
import socket
import os
s = socket.socket()
#socket.AF_INET, socket.SOCK_STREAM
s.connect(("localhost", 23451))
i = 0
while i <= 6:
import codecs
foto_adi = s.recv(1024)
datas = s.recv(1024)
f = open("{}.jpg".format(foto_adi.decode()), "wb")
while datas:
f.write(datas)
datas = s.recv(1024)
f.close()
print("{} alındı...".format(foto_adi.decode()))
codecs.register_error("strict", codecs.ignore_errors)
i += 1
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi pikafaresi -- 13 Şubat 2021; 12:15:8 >