Merabalar iki bilgisayar arasında kamera görüntülerini network üzerinden aktarmaya calısıyprum.(bi nevi kamera lı chat)Eger herhangi bir sıkıştırma kullanmassam object out ve in stream leri ile bu işlemi gerceklestirebiliyorum.fakat veri boyutu büyük olduğundan Lan dısındaki ağlarda sorun cıkıyor bu neden le veri leri network e koymadan sıkıstırmaya karar verdim.zip,gzip yada DeflaterOutputStream & InflaterInputStream class larının hepsini denedim ancak cok ilginç bir hata alıyorum daha doğrusu hata yok program ilgili satıra geldiğinde takılıp kalıyor. aşşağıdaki kod örneinde biraz daha acıklamaya calısıcam.

//sözde kod

1    inStrean = socket.getInputStream();
2    outStrean = socket.getOutputStream();
3    gzipin =  new GZIPInputStream(instream);
4    gzipout = new GZIPOutPutStream(outstream);

yukarıdaki kod server ve client ın her ikisinde de tanımlı.

bu uygulamada client ve server karsılıklı olarak in ve out nesneleri elde ediyorlar.Eger iletişim tek taraflı olursa bir sorun yok(örn:sadece server veri gönderiyor) ancak çift taraflı olarak yazmaya calıstığımda(yukrıdaki gibi) 3. ve 4. satırlarda program takılıp kalıyor.hata vermiyor.gzipin nesnelerini bir türlü olusturamıyor. bu tür client server uygulamalarında socket nesnesi üzerinden in out stream lerinin elde edilmesi ile ilgili bir sıralama kuralı varmı acaba ?

soruldu: 27 Ara '12, 16:38

Sheriff's gravatar image

Sheriff
12691116
cevap kabul oranı: 28%

Lütfen basliklari soru seklinde yaziniz!

Kullanim kilavuzu: http://www.btsoru.com/questions/1339/btsorucom-kullanm-klavuzu

(28 Ara '12, 06:24) CemIkta ♦ CemIkta's gravatar image

Bu hatayı bende dosya olusuturup, içine bir şeyler yazıp sonra o dosyayı sıkıştırıp, indirtmek istediğimde alıyordum. Sebebi ise OutputStream nesnesinin JSR içinde tanımlı bir nesne olması ve işlemleri arka arkaya yapmaya çalışman. OutputStream nesnesini kapattığında varolan işlem sürecini kapatmış oalcağından böyle bir seçenekte söz konusu olmuyordu.

Çözüm olarak download kısmında hatayı aldıgımdan, bir ajax ile download kısmını yaptım.Download kısmına geldiğinde OutputStream nesnesini kapatmadan eğer dosyanın sıkıştırılma işlemi başarılı ise ;

  var uri = document.URL.substr(0, 38);                                            
      window.location.replace(uri + "/action/downloadApp.jsp?appName="+data[0] +
 &articleNo=" +data[1]);

gibi bir yönlendirme ile işimi halletmiştim.

Fikir vermesi açısından kullanabilirsin.(web için)

permanent link

cevaplandı: 28 Ara '12, 01:08

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

değiştirildi: 28 Ara '12, 05:44

uygulamayı ilk yazdığım zamanlarda in & out streamlerini soket ten bir defa elde edip while(true) içersinde sadece JPEGEncoder.encode(img) metodu ile gonderiyordum.Java 5 ile JPEGEncoder & decoder sınıfları yerini IMageIO ya bıraktı.Bu yeni sınıf ile dongü içersinde bir türlü yukardaki senaryoyu gercekleştiremedim daha donra resim gondermektense raw resim pixel lerini zip leyip gondereyim dedim .ama gzip nesneleri bir türlü olusturulamıyor kod o satıra geldiğinde takılıp kalıyor. program o satıra gelince takılıp kalıyor sanki bir IO cihazından cevap bekliyor gibi ilgili satırda takılıyor

(28 Ara '12, 07:37) Sheriff Sheriff's gravatar image

Ağ programlama yaparken MultiThreading kodlama yapmalısın. İşemlerin Race condition sorunu yaşıyor olabilir. Çift yönlü veri akışı yaparken synchronized metodu kullanmanı tavsiye ederim.

permanent link

cevaplandı: 28 Ara '12, 04:37

MDemir's gravatar image

MDemir
2.1k173445
cevap kabul oranı: 24%

hocam uygulama birden cok client a hizmet verebilmek için zaten cok kanallı olarak çalışıyor.şimdilik yarış durumu olusuturacak bir durum yok sadece gzip nesneleri bir türlü olusturulamıyor hata da yok.

(28 Ara '12, 07:39) Sheriff Sheriff's gravatar image
  • Client1 videoyu sıkıştırır, Server'a gönderir
  • Server sıkıştırılmış dosyayı Client2'ye gönderir
  • Eş zamanlı olarak Client2, Server'a dosya gönderir
  • Server dosya alır ve gönderir.
  • ...

Mantık yürütücek olursak Client1, Server ve Client2 aynı andan birden fazla işlem yapıyor. Tek yönlü programladığında sorunnun olmaması gayet doğal. Ama iş aynı anda process çalıştırmaya gelince kitlenme yaşanıyor. Bunu aşmak için Özellikle Server tarafını iyi kordine etmek gerekiyor.

Java UDP Socket Promlama ile media framework(JMF) gerçek zamanlı veri iletişiminde kullanılabilir. En uygun olarak UDP tabanlı programla görünüyor.

Veya uygulamanda Server olarak geliştrdiğin iş parçaçığını RMI tabanlı dağınık oalrak P2p(peer-to-peer) programlama ile kodlanabilir.

http://1000projects.org/voice-chatting-and-video-conferencing-a-java-project.html

permanent link

cevaplandı: 28 Ara '12, 08:49

MDemir's gravatar image

MDemir
2.1k173445
cevap kabul oranı: 24%

değiştirildi: 28 Ara '12, 09:27

benim projede soyle bi yapı var server ortada dağıtıcı rolü görmüyor.direk server dan client a uctan uca bir bağlantı kuruluyor.ve client sürekli veri gondermeye baslıyor Server ise aynı sekilde gelen veriyi acıyor gosteriyor zipleyip geri gonderiyor kodlardan sıkıstırma ile ilgili olan'ları cıkardığımda sorunsuz calısıyor.tek yapmak istediğim OutStream ve inStream nesneleri ni gzip out &in ile değiştirnek. ancak gzipin = new GzipInputStream(instream); satırında takılıp kalıyor.

(28 Ara '12, 10:53) Sheriff Sheriff's gravatar image

Çift yönlü biçimde dosyalar sıkıştırılmadan ağ üzerinde soruncuzca iletilebiliniyor mu ?

(28 Ara '12, 11:04) MDemir MDemir's gravatar image

ewt hiç bi sorun olmadan gonderebiliyorum

(28 Ara '12, 12:44) Sheriff Sheriff's gravatar image

O zaman sıkıştırılmış dosyalarında iletilmesi lazım. Sıkıştırıken acaba sorun mu çıkıyor. Deflate ve Inflate sınıflarınızın doğru çalıştığına emin misiniz? Programı debug modda çalıştırıp daha detaylı inceleyin bence. Sorunu daha net görmüş olursunuz.

(28 Ara '12, 13:03) MDemir MDemir's gravatar image

daha hiç sıkıstırma metoduna gelmeden hata veriyor debug yapıyorum gzip nesnesini isput stream dan olsuturduğum satıra gelince takılıp kalıyor

(28 Ara '12, 15:31) Sheriff Sheriff's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1
×1

Soruldu: 27 Ara '12, 16:38

Görüntüleme: 803 kez

Son güncelleme: 28 Ara '12, 15:31

Benzer sorular

powered by BitNami OSQA