![]() | |
| | #1 (permalink) |
| Üye Üyelik Tarihi: 07/2006
Mesaj: 80
|
merhaba... bu aralar soket programlama ile ugrasiyorum da sorum su: normal olarak server 'im var. Clientim var. komut satırından "java Client" girdigimde sorunsuz bir sekilde program calisiyor gerekli mesajı yazdırıp programdan cikiyor. benim amacım, clienti sürekli baglantida tutmak, server accept() metoduyla sürekli baglanti beklerken, ben bunu clientde nasıl yapabilriim teşekkürler.. |
| | |
| | #2 (permalink) |
| Eski Cevizci Üyelik Tarihi: 06/2003
Mesaj: 131
|
Merhaba, Senin için basit bir ornek derledim. Kodda gorebileceğin gibi konuşan kısmı bir dongu içine almaktan başka bir esprisi yok olayın, fakat burda socketi sürekli açık tutmaktan ziyade tasarım ile ilgili başka sorunlar var. Şöyleki; 1. Socketi sürekli acık tutacaksan, ve programınında run etmeye devam etmesini isteyeceğine göre bunu ayrı bir thread'de halletmen gerekiyor. (aşağıdaki ornek bu problemi çözüyor) 2.Server'a gondereceğin dataları bu thread'e geçecek bir pool yazman gerekiyor. 3.Server'dan gelen response dataların yorumlanması (bu datalar basit şeyler değilse) uzun sürebilir. bu durumda onları yorumlayacak ayrı thread'ler başlatman gerekiyor. 4. Server'dan gelen response'ları komutu gondermek isteyene bildirmek istiyorsan bir geri donuş tutamacı hazırlaman gerekiyor. Not: aşağıdaki ornek gayet basit bir yaklaşım sergiler, server ile senkron olarak konuşur. Asenkron olarak konuşabilmek için farklı bir tasarım düşünmen yada daha iyisi nio(new i/o yada non-blocking i/o diye geçer) konusuna bir bakman faydalı olur. <code> public class Talker extends Thread { private volatile boolean continue; public synchronized boolean getContinue() { return continue; } public synchronized void setContinue(boolean continue) { this.continue= continue; } private String host; private int port; public Talker(String host, int port) { super(); setContinue(true); this.host= host; this.port= port; //start the talker thread //this.start(); } public void run() { Socket sock= new Socket(host, port); PrintWriter toServer= new PrintWriter( sock.getOutputStream() ); BufferedReader fromServer= new BufferedReader( new InputStreamReader(sock.getInputStream()) ); while( getContinue() ) { String toServerLine= "naber yalan dunya!\n"; toServer.print( commandLine ); toServer.flush(); String fromServerLine= fromServer.readLine(); //use server response here! } toServer.close(); fromServer.close(); sock.close(); } } </code> Yukarıdaki sınıfı şu şekilde kullanabilirsin; Talker talker= new Talker("127.0.0.1", 18281); talker.start(); Kolaylıklar dilerim. |
| | |
| | #3 (permalink) |
| Üye Üyelik Tarihi: 04/2007 Yer: Ankara
Mesaj: 529
|
İstemci ve sunucu kod örnekleri için incelemelisin.
|
| | |
![]() |
| Bookmarks |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konuyu açana göre | Forum | Cevap | En Son Mesaj |
| XML socket server | keramet | C / C++ | 0 | 13/02/2007 02:53 |
| Socket Programlama | HunTER | Genel Programlama | 40 | 13/05/2006 11:09 |
| Socket Bağlantı Hakkında.. | PhpX | PHP | 13 | 16/10/2005 03:17 |
| Socket Programming?? | JAKOB_BG | C / C++ | 7 | 22/06/2004 15:59 |
| socket-audio | civicim | Java / JSP | 2 | 23/05/2004 10:05 |
| Reklamlar & Desteklenenler | |
| Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv | |