ucunbiri Mesaj tarihi: Nisan 4, 2010 Paylaş Mesaj tarihi: Nisan 4, 2010 SpiderS_DangeR said: ucunbiri öm attım bakabilicek misin simdi gördüm ya kusura bakma iyi oldu uyardığın :) atıyorum şimdi cevap Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Nisan 4, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 4, 2010 Takıldığım bir nokta var. Şimdi clientlardan gönderilen her bağlantı isteği için ayrı bir thread yaratılıyo ve bu threadler de ayrı soketlerden bağlanıyo. Ama ben mesela A threadinde oluşturulan soketi B threadinde kullanmak istiyorum. Bunun bir yolu var mı? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gladmir Mesaj tarihi: Nisan 4, 2010 Paylaş Mesaj tarihi: Nisan 4, 2010 Neden? Logic i aç bakalım biraz. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Nisan 4, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 4, 2010 Clientlar arası mesajlaşma yapmaya çalışıyorum. Client sunucuya mesajla birlikte mesajın yollanmasını istediği clientın soket bilgilerini(port vs) yollayacak, sunucuda PrintWriter out = new PrintWriter(new OutputStreamWriter(soket.getOutputStream()),true); burada ki soket yerine öbür mesajın yollanması istenen clientın soketini kullanacak böylece out.println() methoduyla istenen clienta mesaj yollanmış olacak. Açıklayabildim mi bilmiyorum, çok absürd bir yol da olabilir ama amatörlüğüme verin sdf Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 4, 2010 Paylaş Mesaj tarihi: Nisan 4, 2010 Ben anlamadım da kodu yazmaya oturmadan önce bağlantıların nasıl olacağını anlatan bir iki diagram çizsen faydalı olur. Ne yapmak istediğini sözel olarak başkasına anlatmak çok zor. Bakınız: http://www.sonnyradio.com/what-the-customer-actually-wanted.jpg Mesela mesajları sunucu mu dağıtacak? Sunucu sadece peer-to-peer bağlantı kurmayı mı sağlayacak? Bağlantı kurarken hangi mesajlar yollanacak bunları belirlemen lazım önce. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Nisan 4, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 4, 2010 Kusura bakmayın biraz sıkıntı yaşıyorum derdimi anlatırken. Mesajları server clienttan gelen bilgiye göre dağıtacak. Atıyorum /mesajyolla/1324/naber yazınca client, sunucu bunu parse edecek ondan sonra 1324 portuyla iletişim kuran threadde bulunan soketi kullanarak out.println() metoduyla mesajı gerekli clienta yollayacak. Yani clientlar arasında hiçbir bağlantı olmayacak. Yine mi olmadı? Yani bağlantılar zaten kurulmuş, bütün clientlar server'a bağlı, ama hepsi farklı socketlerden bağlı çünkü hepsi farklı thread ile çalışıyor. Amacım A threadindeki socketi B threadinde kullanıp tekrar socket oluşturmadan iki client arasında mesajlaşma sağlamak. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gladmir Mesaj tarihi: Nisan 4, 2010 Paylaş Mesaj tarihi: Nisan 4, 2010 Peki anladım. İlk başta kullandığın yapıyı gözden geçir, her socket e bir thread sana sorun çıkarır. Socket = client = thread sayısı, 3000 client ın var ken 3000 thread çalışması server side, olmaz. Kaynakları boşa harcıyor olacaksın. Neyse şimdilik bu kalsın. Server da bir tane Listener thread imiz olsun, bu adam gelen incoming client request lerini handle etsin. Eğer large scale de iş yapıyorsak, Listener sayısını arttırıp farklı port lardan listen edip, client side da 'n' portundan timeout alan client in bir sonraki 'n+1' den connection denemesi için policy yazarız veyahut singleton listener üzerinden queing yaparız (Şimdi yap diye yazmıyorum sadece olası scaling senaryoları bunlar) Listener ın socket i pass ladıgı bir SocketHandler diye bir adamımız olsun, bu adam socket i ya bir ID generate etsin yada user ları tuttuğun bir yer var ise, gelen user in ismine göre bir variation ile array list ler halinde yada daha kolay bir map içine koyup aklında tutsun. Tabii burda delayed iş yapmak gerekecek çünkü gelen connection isteğini kabul ettiğimiz, kullanıcının mesaj alıp vermesine imkan verdiğimiz anlamına gelmemeli, daha ne adını aldık ne password istedik dimi. Bu noktadan sonra socket üzerinden client server konusup handshake yapacaklar, user pass bilgisi gelecek, auth. olan client ları ya baska bir safe list e alacağız yada başka bir yöntemle o adamın ilgili flag ini set edeceğiz, bu adam alıp vermeye hazırdır şeklinde. Geldik senin sorunun esas kısmına. A ve B adında iki adamımız birbirlerine mesaj gönderirken, A sockete basacağı string i formatted şekilde basacak, yani; A, 'paticik ftw' yazdığı anda client side da string, 'dest-user=B;message=paticik ftw' gibi. Elimizde dest var orig var, mesaj var. Parse edip server side da Map e koydugumuz ilgili adamlar arasında iterate edip mesajı ilgili sockete basacağız. Iteration i en güzel şekilde yapmak adına farklı distile map ler tutabiliriz ama bu da kalsın şimdilik. Yazdıklarım ne en basit nede en effective çözüm, istediğin gibi yorumla, implementation i istediğin gibi değiştir. En güzel, en verimli ve eğlenceli dönemleri yaşıyorsun, tadını çıkar. Kolay gelsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 4, 2010 Paylaş Mesaj tarihi: Nisan 4, 2010 SpiderS_DangeR said: Atıyorum /mesajyolla/1324/naber yazınca client, sunucu bunu parse edecek ondan sonra 1324 portuyla iletişim kuran threadde bulunan soketi kullanarak out.println() metoduyla mesajı gerekli clienta yollayacak. Client mesaj yollayacağı kişinin port numarasını nerden bilecek ki? Sunucuda client isimlerini (ya da ID'lerini her neyse) socket'lere eşleştirecek singleton bir map tutabilirsin. Client sunucuya bağlantı kurduğunda bu map içine şeklinde bir ikili eklersin, bağlantı kesildiğinde silersin. Sonra sunucuda X client'ine bir mesaj yöneltmen gerektiğinde bu map'i kullanarak socket'i bulup kullanırsın. Map interface'ine ve HashMap class'ına bak API'den. Hatta multithread ortamında olduğun için ConcurrentHashMap. Bir thread içinden başka bir thread'e referans vermeye kalkmışma hiç bence. Boşuna karıştırırsın işleri. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gladmir Mesaj tarihi: Nisan 9, 2010 Paylaş Mesaj tarihi: Nisan 9, 2010 Spider ne yaptın? halledebildin mi? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Nisan 18, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 18, 2010 yok abi yapamıyorum, kafayı yicem Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
ucunbiri Mesaj tarihi: Nisan 21, 2010 Paylaş Mesaj tarihi: Nisan 21, 2010 haha hadi yine iyisin egemen, bak okuldayım sana kod yollayacağım geldi aklıma. 1-2 saate atarım. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
ucunbiri Mesaj tarihi: Nisan 21, 2010 Paylaş Mesaj tarihi: Nisan 21, 2010 bu arada şeyi sorcam, neden bütün clientlar farklı porttan bağlanıyor ki? sabit yap hepsi aynı porttan bağlansın değişen sadece IPler olsun, öyle yapmıştım ben. hem MSNde falan da böyle. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
nameless Mesaj tarihi: Nisan 21, 2010 Paylaş Mesaj tarihi: Nisan 21, 2010 asenkron socket yok mu java'da callbackli falan? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Nisan 21, 2010 Konuyu açan Paylaş Mesaj tarihi: Nisan 21, 2010 ucunbiri said: bu arada şeyi sorcam, neden bütün clientlar farklı porttan bağlanıyor ki? sabit yap hepsi aynı porttan bağlansın değişen sadece IPler olsun, öyle yapmıştım ben. hem MSNde falan da böyle. abi şimdi ben kendi bilgisayarımda uğraşıyorum ya, o yüzden ip ler aynı socketler farklı doğal olarak sfdg Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar